你說得對 - 如果你配置了S3,那麼如果你選擇了(),然後再存儲(),那麼你最終將得到2個文件。
pick()創建的文件將位於S3存儲桶的根級別。
我沒有找到避免這種情況的方法,因此我使用pick(),store()和remove()來運行 - 因爲這些是嵌套它們所需的異步函數,或者(更好地)使用流控制你的選擇。如果你不需要在pick()和store()之間做任何事情,那麼你可以做pickAndStore(),如果你在執行store()請求之前需要pick()調用的信息,示例如下:
var file;
// authenticate
filepicker.setKey('YOUR_API_KEY');
// pick
filepicker.pick({
container : 'modal',
debug : false,
extensions : ['.png', '.jpg', '.jpeg', '.gif'],
folders : false,
language : 'en',
maxFiles : 1,
maxSize : '2560*1600',
multiple : false,
openTo : 'COMPUTER',
services : [
'BOX',
'COMPUTER'
]
}, function(res) {
// save blob, to remove it later
file = res;
// store
filepicker.store(file, {
access : 'public',
container : 'YOUR_BUCKET',
location : 'S3',
path : 'SOME_FOLDER/ANOTHER_FOLDER/FILENAME.png'
}, function(res) {
// remove
filepicker.remove(file, function() {
console.log('ok')
});
});
});
這會影響S3爲單個文件傳輸兩次使用情況是不是?但是,如何準備商店文件(只需在表單上選擇文件),然後立即存儲它們。如果我正確地做到這一點,就沒有辦法管理在S3上留下的垃圾,用戶離開頁面或發生任何其他問題,對吧? – Marcin 2013-05-03 15:23:40