【问题标题】:Fine Uploader to S3 Folder精细上传到 S3 文件夹
【发布时间】:2013-11-28 03:01:31
【问题描述】:

有谁知道是否可以使用 Fine Uploader 上传到 S3 存储桶内的文件夹?我尝试向请求端点添加“\foldername”,但没有成功。

谢谢。

【问题讨论】:

    标签: javascript amazon-s3 upload fine-uploader


    【解决方案1】:

    S3 没有文件夹。一些 UI(例如 AWS 控制台中的 UI)和更高级别的 API 可能会提供这个概念,作为一种抽象,但 S3 对文件夹没有任何原生理解,只有键。您可以创建所需的任何密钥并将其传递给 Fine Uploader S3,它会在给定特定密钥的情况下存储该文件。例如,“folder1/subfolder/foobar.txt”是一个完全有效的键名。默认情况下,Fine Uploader 会生成一个 UUID 并将其用作对象的键名,但您可以通过提供 objectProperties.key 值轻松更改它,该值也可以是一个函数。有关详细信息,请参阅S3 objectProperties option in the documentation

    【讨论】:

      【解决方案2】:
      $("#fineuploader-s3").fineUploaderS3({
          // ....
          objectProperties: {
              key: function (fileId) {
      
                  var filename = $('#fineuploader-s3').fineUploader('getName', fileId);
                  var uuid = $('#fineuploader-s3').fineUploader('getUuid', fileId);
                  var ext = filename.substr(filename.lastIndexOf('.') + 1); 
      
                 return  'folder/within/bucket/' + uuid + '.' + ext;
              }
          }
      });
      

      【讨论】:

      • 你为什么不解释一下代码在做什么?
      • 这里不需要使用jQuery,尤其是问题没有用jQuery标记。
      【解决方案3】:

      这对我有用:

      var uploader = new qq.s3.FineUploader({
          // ...
          objectProperties: {
              key: function(fileId) {
                  return 'folder/within/bucket/' + this.getUuid(fileId);
              }
          }
      });
      

      【讨论】:

        【解决方案4】:

        上传到服务器之前可以修改路径:

        uploader.on('submit', (id) => {   
          const key = s3Uploader.methods.getUuid(id)   
          const newkey = 'folder/within/bucket/' + key   
          uploader.methods.setUuid(id, newkey) 
        })
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2019-10-29
          • 1970-01-01
          • 2014-10-24
          • 2021-07-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多