2016-04-26 37 views
1

我在S3上使用Fine Uploader,並且我的客戶端的計算機時間已關閉,導致S3 RequestTimeTooSkewed錯誤。理想情況下,我的客戶會有合適的時間,但我希望我的應用能夠適應這種情況。如何解決FineTime Uploader中的RequestTimeTooSkewed問題

我看到這篇文章 - https://github.com/aws/aws-sdk-js/issues/399關於如何自動重試請求。您從錯誤響應中獲取ServerTime並將其用作響應中的時間。另一種方法就是每次從可靠的外部來源獲得時間,避免重試。不過,我不確定如何將這兩種方法掛鉤到S3 Fine Uploader。有沒有人有如何做到這一點的想法?

回答

1

Fine Uploader 5.5提供了一個解決方案來解決這種情況。從S3 feature documentation

如果運行Fine Uploader的機器上的時鐘離當前日期太遠,S3可能會拒絕從本機發送的任何請求。爲了克服這種情況,您可以在創建新的Fine Uploader實例時以毫秒爲單位包含clock drift value。設置此值的一種方法是根據您的服務器從當前unix時間根據瀏覽器減去當前時間。例如:

var uploader = new qq.s3.FineUploader({ 
    request: { 
     clockDrift: SERVER_UNIX_TIME_IN_MS - Date.now() 
    } 
}) 

如果此值是非零,精細上傳S3將它用於填充所述x AMZ最新標題和發送到S3中的策略失效日期。