2013-10-02 128 views
0

我成功上傳文件到S3。如何獲取上傳文件的URL?

但是我在嘗試獲取上傳文件的URL時遇到了問題。

我看到有一個getKey方法,但它似乎沒有像我想的那樣工作。

本質上,我試圖用上傳文件的鏈接來替換列出的文件的名稱。如果上傳的人無法獲得鏈接,則無需上傳文件。

所以我一直在試圖獲取上傳對象的URL或密鑰,並且計劃在'complete'事件中修改文件名文本。

也許有更好的方法來修改最終的文件名文本。

這裏似乎什麼我不工作:

}).on('complete', function (event, id, name, responseJSON) { 

    // Fails, not using the fineuploader object correctly, manualuploader is the fineuploader object. 
    console.log("Object Key:+manualuploader.getKey(id)); 

    }); 

回答

4

你有兩個選擇:

  1. 獲取簽署的網址通過AWS SDK服務器端的文件,並返回您在對Fine Uploader的uploadsuccess請求的響應中的網址。它將通過響應參數提供給「完整」事件處理程序。

  2. 使用密鑰和存儲區URL構建URL客戶端。

如果您的文件不可公開查看,則必須使用選項1。 fineuploader.com上的演示使用選項1.在大多數情況下,這是最合適的方法,除非您可以允許任何人從您的存儲桶中儘可能多地流式傳輸文件。

此外,如果您嘗試在使用jQuery插件時在Fine Uploader實例上調用getKey方法或任何其他方法,則必須這樣做as described in the jQuery plug-in documentation。您在上面的代碼中調用getKey方法與文檔不一致。您需要像這樣調用getKey:$("#uploader").fineUploaderS3("getKey", id)

+0

你好雷,謝謝你的快速回復。不幸的是我仍然有一個小問題。我正在嘗試查找服務器發回的完整JSON響應,但在處理'complete'事件並查看JSONresponse變量時,我只看到一個簡單的'success:true'實體。 – sthede

+0

我確實看到一些調試輸出到控制檯,HTML響應似乎已被捕獲,確實包含完整的URL,實際上我發現我的服務器上的PHP處理程序設置爲返回'templink '就像fineuploader樣本。所以,我似乎無法得到正確的響應JSON,感謝您的幫助。 – sthede

+0

你不應該返回HTML。您必須返回JSON作爲對上傳成功POST請求的響應。查看S3 PHP演示代碼,該代碼在fineuploader.com上用於從服務器返回到客戶端的鏈接。如果你遵循這個例子,它會工作。將響應參數的內容打印到控制檯,或者在您選擇的javascript調試器中檢查它。如果您沒有看到您期望的屬性,請查看HTTP流量並重新檢查您的服務器端代碼。 –

相關問題