加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – Rails上传到AWS创建.zip.cpgz文件循环

发布时间:2020-12-16 19:50:35 所属栏目:百科 来源:网络整理
导读:我遇到一个奇怪的情况,一些文件,特别是ZIP格式,当我的Rails应用程序上传到AWS时,它们被损坏/转换.当下载和解压缩时,他们变成一个CPGZ格式,它解压缩成一个ZIP,无限地这样做. 我没有注意到导致这种情况的模式,所以看起来似乎是零星的,并且可以在上传之前确认文
我遇到一个奇怪的情况,一些文件,特别是ZIP格式,当我的Rails应用程序上传到AWS时,它们被损坏/转换.当下载和解压缩时,他们变成一个CPGZ格式,它解压缩成一个ZIP,无限地这样做.

我没有注意到导致这种情况的模式,所以看起来似乎是零星的,并且可以在上传之前确认文件没有被破坏.我发现的唯一其他issue/topic与PHP有关,似乎是不同的情况.

我使用AWS SDK for Ruby v1(不是v2,因为我的Rails版本)和jQuery-File-Upload.由于一些文件很大,我正在使用分块上传.

在我的控制器中,预先编写的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
  }
});

有没有人经历过这个?这很令人沮丧.

解决方法

发送请求时,将内容类型设置为application / zip.

SEE https://github.com/aws/aws-sdk-ruby/blob/aws-sdk-v1/lib/aws/s3/presigned_post.rb

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读