जब मेरे रेल अनुप्रयोग के भीतर एडब्ल्यूएस पर अपलोड भ्रष्ट कर रहे हैं/परिवर्तित मैं एक अजीब स्थिति है जहाँ कुछ फ़ाइलों को, विशेष रूप से प्रारूप ज़िप में चल रहा हूँ पर अपलोड करें। जब डाउनलोड किया है और decompressed वे एक CPGZ प्रारूप है, जो एक ज़िप में वापस decompresses, और असीम करता है में बदल जाते हैं।रेल एडब्ल्यूएस बनाने .zip.cpgz फ़ाइल पाश
मैं एक पैटर्न है कि इस का कारण बनता है देखा नहीं है, तो यह प्रतीत होता है छिटपुट है, और इस बात की पुष्टि कर सकते हैं कि फ़ाइलों को अपलोड करने से पहले भ्रष्ट नहीं हैं। केवल अन्य issue/topic मैं इस पर मिल गया है पीएचपी से संबंधित है, और विभिन्न परिस्थितियों हो रहा है।
मैं AWS SDK for Ruby v1 (मेरे रेल संस्करण के कारण v2 नहीं) और jQuery-File-Upload का उपयोग कर रहा हूं। चूंकि कुछ फाइलें बड़ी हैं, इसलिए मैं खंडित अपलोड का उपयोग कर रहा हूं।
मेरी नियंत्रक में, presigned पोस्ट 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
}
});
किसी को भी है इसका अनुभव किया? यह बहुत निराशाजनक है।
आप अपने स्थानीय डिस्क पर एक अस्थायी फ़ोल्डर में "अपलोड करने" की कोशिश की है? यदि हां, तो क्या भ्रष्टाचार होता है? –
@ एंथनी मैं स्थानीय रूप से अपलोड का परीक्षण कैसे करूं? –