Tôi đang gặp phải tình huống lạ khi một số tệp, định dạng ZIP cụ thể, khi được tải lên AWS trong ứng dụng Rails của tôi bị hỏng/chuyển đổi. Khi được tải xuống và giải nén chúng biến thành một định dạng CPGZ, giải nén trở lại vào một ZIP, và vô cùng thực hiện điều này.Rails tải lên AWS tạo tệp zip .pg.cpgz
Tôi chưa nhận thấy một mẫu gây ra lỗi này, vì vậy dường như không thường xuyên và có thể xác nhận rằng tệp không bị hỏng trước khi tải lên. Các chỉ khác issue/topic Tôi đã tìm thấy về điều này liên quan đến PHP, và có vẻ là hoàn cảnh khác nhau.
Tôi đang sử dụng AWS SDK for Ruby v1 (không phải v2 vì phiên bản Rails của tôi) và jQuery-File-Upload. Vì một số tệp lớn, tôi đang sử dụng tải lên chunked.
Trong điều khiển của tôi, URL POST presigned được tạo ra như thế này:
S3_BUCKET.presigned_post(key: "uploads/#{SecureRandom.uuid}-${filename}", success_action_status: '201')
Và jQuery File Upload được thiết lập như vậy (một số bộ phận bị loại bỏ cho ngắn gọn):
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
}
});
Có ai kinh nghiệm này? Nó rất bực bội.
Bạn đã thử "tải lên" vào thư mục tạm thời trên đĩa cục bộ của mình chưa? Nếu có, tham nhũng có xảy ra không? –
@AnthonyE Tôi sẽ thử nghiệm tải lên cục bộ bằng cách nào? –