私はこのプラグイン(https://github.com/blueimp/jQuery-File-Upload)を試していて、フォルダのアップロードに興味があります。jQuery File Upload Plugin:アップロードされたフォルダの構造を保持することは可能ですか?
アップロードされたサブフォルダの構造を保持できますか(= 1つのフォルダを3つのサブフォルダでアップロードし、それぞれに複数のファイルが含まれています)?
私はこのプラグイン(https://github.com/blueimp/jQuery-File-Upload)を試していて、フォルダのアップロードに興味があります。jQuery File Upload Plugin:アップロードされたフォルダの構造を保持することは可能ですか?
アップロードされたサブフォルダの構造を保持できますか(= 1つのフォルダを3つのサブフォルダでアップロードし、それぞれに複数のファイルが含まれています)?
これは、webkit
ブラウザでドラッグアンドドロップを使用して可能です。.dataTransfer
オブジェクトはdrop
イベントになります。 .webkitGetAsEntry()
;ディレクトリ内のエントリを反復する、アップロードされたフォルダと同じ名前を持つreadEntries()
をDirectoryEntry
に.createReader()
をディレクトリを作成するwebkitRequestFileSystem
getDirectory()
、ディレクトリ名をアップロードしたディレクトリを作成している先で各FileEntry
ため.copyTo()
を呼び出します。
webkitRequestFileSystem()
のいずれかを使用してフォルダーにアクセスできるようになり、最初のパラメーターとしてディレクトリ名を持つ.getDirectory()
を呼び出し、2番目のパラメーターとして空のオプションオブジェクト{}
を呼び出します。
また、ファイルマネージャGUIまたはコマンドラインインターフェイスを使用して、実際のユーザーファイルシステムからchromeまたはchromiumプロファイルフォルダのフォルダにアクセスすることもできます。 またはFile System
のフォルダを別のディレクトリにコピーするローカルスクリプトを作成し、アップロードしたフォルダの元の名前にフォルダの名前を変更します。フォルダとファイルのパスは調整されず、フォルダ名のみが調整されます。
アップロードされたサブフォルダの構造を保存することができます(アップロードする 1つのフォルダに3つのサブフォルダがあり、それぞれに複数のファイルが含まれています)。
ファイルマネージャでは、フォルダとファイル構造を保持する必要がありますが、フォルダはアップロードされたディレクトリと同じ名前にはなりません。フォルダは、Origins
フォルダの前に、クロムプロファイルフォルダの最後のフォルダFile System
に配置する必要があります。参照してくださいHow to Write in file (user directory) using JavaScript?
function errorHandler(e) {
console.log(e)
}
function handleFiles(e) {
console.log("file", file)
}
function handleDrop(event) {
var dt = event.dataTransfer;
for (var i = 0; i < event.dataTransfer.items.length; i++) {
var entry = dt.items[i].webkitGetAsEntry();
if (entry.isFile) {
console.log("isFile", entry.isFile, entry);
entry.file(handleFiles);
} else if (entry.isDirectory) {
console.log("isDirectory", entry.isDirectory, entry);
window.webkitRequestFileSystem(window.TEMPORARY, 1024 * 1024
, function(fs) {
// create directory with uploaded directory name
fs.root.getDirectory(entry.name, {
create: true
}, function(dirEntry) {
// read folders, files in uploaded directory
var reader = entry.createReader();
reader.readEntries(function(entries) {
entries.forEach(function(file) {
// copy files to new directory
file.copyTo(dirEntry);
console.log("file:", file, "\ncopied to directory:", dirEntry)
})
})
}, errorHandler)
}, errorHandler)
}
}
}
'のを利用することも可能である@TomK plnkr'使用して、単一または複数のファイル、フォルダをアップロードする要素のアップロードダイアログやドラッグ& 'multiple'属性を含み、' webkitdirectory'属性をトグルすることによってドロップします。 'createWriter()'を使って作成したディレクトリにファイルを書き出します。 – guest271314