Railsアプリケーション内のAWSにアップロードされたファイルのうち、ZIP形式のファイルが破損したり変換されたりするという状況が続いています。ダウンロードして圧縮解除すると、CPGZ形式に変換され、ZIP形式に復元され、無限に圧縮されます。RailsがAWSにアップロードされ、.zip.cpgzファイルループが作成される
私はこれを引き起こすパターンに気づいていないので、見かけ上散発的で、アップロード前にファイルが破損していないことを確認できます。これ以外の唯一のissue/topicは、PHPに関連しており、さまざまな状況のようです。
私はAWS SDK for Ruby v1(私のRailsバージョンのためv2ではありません)とjQuery-File-Uploadを使用しています。ファイルの一部が大きいので、チャンクアップロードを使用しています。
私のコントローラでは、presigned POSTのURLは次のように作成されます
S3_BUCKET.presigned_post(key: "uploads/#{SecureRandom.uuid}-${filename}", success_action_status: '201')
とjQueryファイルのアップロードは、(いくつかの部分は簡潔にするため削除)ので、同じように設定されています
this.$el.fileupload({
fileInput: this.uploadField, // this is an <input type="file">
url: this.awsURL, // https://BUCKET.s3.amazonaws.com/
formData: JSON.parse(this.awsData), // {"AWSAccessKeyId":"...","key":"uploads/1234-${filename}","policy":"...","signature":"...","success_action_status":"201"}
type: 'POST',
autoUpload: true,
paramName: 'file',
dataType: 'XML',
replaceFileInput: false,
maxChunkSize: 1000000,
add: function(event, data) {
var file = data.files[0];
var fileType = file.type;
// Check file type
if (~'ai sketch psd jpg jpeg png zip ttf woff eot gif'.indexOf(fileType.toLowerCase())) {
return alert('Sorry, that file type is not supported');
};
data.submit();
},
progress: function(event, data) {
// Display progress
},
done: function(event, data) {
var file = data.files[0];
var fileName = file.name.replace(/ /g,"_");
var item = _this.uploadedItems[fileName];
var key = $(data.jqXHR.responseXML).find("Key").text();
// awsHost = BUCKET.s3.amazonaws.com
var url = '//' + _this.awsHost + '/' + key;
// Set form values using above info
},
fail: function(event, data) {
// Alert failure
}
});
は誰を持っていますこれを経験した?非常にイライラしています。
を参照してくださいあなたは、あなたのローカルディスク上の一時フォルダに「アップロード」を試したことがありますか?もしそうなら、同じ破損が起きますか? –
@AnthonyEローカルでアップロードをテストするにはどうすればよいですか? –