Fix file upload #1419

This commit is contained in:
yflory 2024-02-26 13:41:36 +01:00
parent dcc6f689fb
commit 1a1452f2cd
2 changed files with 22 additions and 19 deletions

View File

@ -1907,7 +1907,7 @@ define([
};
// create the folder structure before to upload files from folder
var uploadFolder = function (fileList) {
var uploadFolder = function (fileList, name) {
var currentFolder = currentPath;
// create an array of all the files relative path
var files = Array.prototype.map.call(fileList, function (file) {
@ -1917,7 +1917,7 @@ define([
};
});
// if folder name already exist in drive, rename it
var uploadedFolderName = files[0].path[0];
var uploadedFolderName = files.length ? files[0].path[0] : (name || '');
var availableName = manager.user.userObject.getAvailableName(manager.find(currentFolder), uploadedFolderName);
// ask for folder name and files options, then upload all the files!
@ -1926,6 +1926,10 @@ define([
// verfify folder name is possible, and update files path
availableName = manager.user.userObject.getAvailableName(manager.find(currentFolder), folderUploadOptions.folderName);
if (!files.length) {
return manager.addFolder(currentFolder, availableName, refresh);
}
if (uploadedFolderName !== availableName) {
files.forEach(function (file) {
file.path[0] = availableName;
@ -2001,19 +2005,21 @@ define([
fileDrop = Array.prototype.slice.call(fileDrop).map(function (file) {
if (file.kind !== "file") { return; }
var f = file.getAsFile();
if (!f.type && f.size % 4096 === 0) {
// It's a folder!
if (file.webkitGetAsEntry) { // IE and Opera don't support it
f = file.webkitGetAsEntry();
var files = [];
nThen(function (w) {
traverseFileTree(f, "", w, files);
}).nThen(function () {
uploadFolder(files);
});
return;
} else {
// Folder drop not supported by the browser
if (file.webkitGetAsEntry) {
let entry = file.webkitGetAsEntry();
if (entry.isFile) { return f; }
// It's a folder
var files = [];
nThen(function (w) {
traverseFileTree(entry, "", w, files);
}).nThen(function () {
uploadFolder(files, f.name);
});
return;
} else {
// Old browsers: unreliable hack to detect folders
if (!file.type && file.size%4096 === 0) {
return; // Folder upload not supported
}
}
return f;
@ -2025,7 +2031,7 @@ define([
}
}
var oldPaths = JSON.parse(data).path;
var oldPaths = data && JSON.parse(data).path;
if (!oldPaths) { return; }
// A moved element should be removed from its previous location
var movedPaths = [];

View File

@ -467,9 +467,6 @@ define([
type = "text/markdown";
}
// Can't upload folder here
if (!file.type && file.size%4096 === 0) { return; }
var thumb;
var preview;
var alt;