// A generalized version for multiple files of different types and different outputs, it takes “Pick Files” as input.
const { path, count, app_id, app_key, overwrite, fileObjects, user_token, user_id, unique_suffix } = inputs;
const files = new Array(count);
for (var j = 0; j < files.length; j++) files[j] = fileObjects[j];
const responses = new Array(files.length);
for (var idx = 0; idx < files.length; idx++) responses[idx] = await uploadFile(idx);
async function uploadFile(idx) {
let n = files[idx].name.lastIndexOf("\.");
if (n < 0) n = files[idx].name.length;
let url = `https://api.backendless.com/${app_id}/${app_key}/files/${path}/${encodeURIComponent(files[idx].name.substring(0,n)+unique_suffix+files[idx].name.substring(n))}?overwrite=${overwrite}`;
let formData = new FormData();
let file = {
uri: files[idx].path,
name: files[idx].name,
size: files[idx].size,
type: files[idx].mimeType,
createdAt: files[idx].createdAt,
modifiedAt: files[idx].modifiedAt,
uploadUrl: url.slice()
};
formData.append('fileToUpload', file);
return ( await fetch(url, {
method: 'POST',
headers: {
'Content-Type': 'multipart/form-data',
'user-token': user_token,
'id' : user_id,
},
body: formData,
}
)
);
}
const successes = responses.filter(uploadResult => uploadResult.status == 200);
const errors = responses.filter(uploadResult => uploadResult.status >= 400);
let output_idx = 1;
if (successes.length > 0 && successes.length == files.length) output_idx = 0;
if (errors.length == responses.length) output_idx = 2;
{
return [ output_idx, { result : JSON.stringify(responses) } ];
}