0
如何指定FineUploader在上傳到Amazon S3時創建的服務器名稱的格式或模式?我需要更好地控制S3上如何創建文件名和路徑。謝謝。帶S3的FineUploader如何在S3上指定對象名稱
如何指定FineUploader在上傳到Amazon S3時創建的服務器名稱的格式或模式?我需要更好地控制S3上如何創建文件名和路徑。謝謝。帶S3的FineUploader如何在S3上指定對象名稱
使用objectProperties.key
選項。
您可以提供一個String
值或一個函數,該函數將預期密鑰返回爲String
。
以下示例演示如何設置密鑰並執行阻止操作($.post
)。它使用jQuery插件,
// <snip>
objectProperties: {
key: function(fileId) {
var keyRetrieval = new qq.Promise(),
filename = $("#fineUploader").fineUploader("getName", fileId);
$.post("createKey.html", {name: filename})
.done(function(data) { keyRetrieval.success(data.key); })
.fail(function() { keyRetrieval.failure(); });
return keyRetrieval;
}
},
// </snip>
一個簡單的例子,
objectProperties: {
key: function(fileId) {
var filename = $("#fineUploader").fineUploader("getName", fileId);
return fileId + "/" + filename;
}
},
記住,如果你想防止用戶覆蓋對方的文件,你應該讓這些鍵獨特!使用隨機密鑰將每個上傳文件放在一個文件夾中將會阻止這一點。
上面的例子會改變客戶端腳本中的密鑰是否正確?我會擔心有人能夠破解併發送他們想要的任何密鑰給簽名代碼。有沒有辦法讓服務器上的PHP指定密鑰,並讓操作的其餘部分使用服務器指定的密鑰? – sthede
不,沒有辦法做到這一點。如果您擔心這種情況,您可以輕鬆檢查策略文檔中的密鑰名稱或簽名服務器上的請求標頭,並在出現腥意時拒絕它們。 –
那麼我可以在上面顯示的代碼中至少執行一個AJAX請求到服務器?返回服務器指定的密鑰,然後當它提交回來時,檢查確認它是服務器指定的密鑰。至少在這種情況下,客戶端機器沒有選擇對象名稱的機制,缺少包含文件名的後綴。會有那樣的工作,還是有一個問題,我沒有看到? – sthede