Software: Apache/2.4.41 (Ubuntu). PHP/8.0.30 uname -a: Linux apirnd 5.4.0-204-generic #224-Ubuntu SMP Thu Dec 5 13:38:28 UTC 2024 x86_64 uid=33(www-data) gid=33(www-data) groups=33(www-data) Safe-mode: OFF (not secure) /var/www/html/wincloud_gateway/node_modules/strapi/lib/services/utils/ drwxr-xr-x | |
| Viewing file: Select action/file-type: 'use strict';
const _ = require('lodash');
module.exports = async (entry, files, { model, source }) => {
const entity = strapi.getModel(model, source);
if (!_.has(strapi.plugins, 'upload')) return entry;
const uploadService = strapi.plugins.upload.services.upload;
const findModelFromUploadPath = path => {
if (path.length === 0) return { model, source };
let currentPath = [];
let tmpModel = entity;
let modelName = model;
let sourceName;
for (let i = 0; i < path.length; i++) {
if (!tmpModel) return {};
const part = path[i];
const attr = tmpModel.attributes[part];
currentPath.push(part);
// ignore array indexes => handled in the dynamic zone section
if (_.isFinite(_.toNumber(path[i]))) {
continue;
}
if (!attr) return {};
if (attr.type === 'component') {
modelName = attr.component;
tmpModel = strapi.components[attr.component];
} else if (attr.type === 'dynamiczone') {
const entryIdx = path[i + 1]; // get component index
const value = _.get(entry, [...currentPath, entryIdx]);
if (!value) return {};
modelName = value.__component; // get component type
tmpModel = strapi.components[modelName];
} else if (_.has(attr, 'model') || _.has(attr, 'collection')) {
sourceName = attr.plugin;
modelName = attr.model || attr.collection;
tmpModel = strapi.getModel(attr.model || attr.collection, source);
} else {
return {};
}
}
return { model: modelName, source: sourceName };
};
const doUpload = async (key, files) => {
const parts = key.split('.');
const [path, field] = [_.initial(parts), _.last(parts)];
const { model, source } = findModelFromUploadPath(path);
if (model) {
const id = _.get(entry, path.concat('id'));
return uploadService.uploadToEntity({ id, model, field }, files, source);
}
};
await Promise.all(Object.keys(files).map(key => doUpload(key, files[key])));
};
|
:: Command execute :: | |
--[ c99shell v. 2.5 [PHP 8 Update] [24.05.2025] | Generation time: 0.0267 ]-- |