【问题标题】:is filepicker.io store files on s3 twice?filepicker.io 是否在 s3 上存储文件两次?
【发布时间】:2013-05-02 21:09:23
【问题描述】:

filepicker.pick() 将文件存储在 S3(根目录)上。如果我稍后调用 filepicker.store() 那么文件将被复制到新位置,所以最后我在两个不同的位置使用两个不同的文件名有两次相同的文件。如何避免这种情况?

我想分别选择两个文件,然后在处理我的表单时立即将它们上传到 S3。

  filepicker.pick({container: "modal"}, function(fpfile) {
    alert("picked"); //file is stored on S3
    filepicker.store(fpfile, { location: "S3", path: "tmp/"}); //will copy to "tmp/" location
  });

【问题讨论】:

    标签: javascript amazon-s3 filepicker.io


    【解决方案1】:

    为了在使用 filepicker.pick 并从您的计算机上传时返回 FPFile 对象的 URL,我们必须将文件上传到 S3。对于 Facebook 等其他服务,我们不会将文件传输到 S3,而只是为您提供一个直接解析回 Facebook 文件的 URL。

    如果需要,您可以使用 filepicker.pickAndStore,它会自动解决这个问题,或者使用 filepicker.remove() 调用。

    【讨论】:

    • 这会影响单个文件的 S3 传输使用两次,不是吗?但是如何只准备文件进行存储(只需在表单上选择文件)然后立即存储它们。如果我做对了,则无法管理留在 S3 上的垃圾,用户会离开页面或发生任何其他问题,对吗?
    【解决方案2】:

    你是对的 - 如果你配置了 S3,那么如果你执行 pick() 然后 store() 之后,你最终会得到 2 个文件。

    pick() 创建的文件将位于 S3 存储桶的根级别。

    我没有找到避免这种情况的方法,所以我使用 pick()、store() 和 remove() 运行 - 因为这些是您需要嵌套它们的异步函数,或者(更好)使用你的选择。

    如果你不需要在 pick() 和 store() 之间做任何事情,那么你可以做 pickAndStore(),如果你在做 store() 请求之前需要来自 pick() 调用的信息,请看这个例子下面:

    var file;
    
    // authenticate
    filepicker.setKey('YOUR_API_KEY');
    
    // pick
    filepicker.pick({
        container  : 'modal',
        debug      : false,
        extensions : ['.png', '.jpg', '.jpeg', '.gif'],
        folders    : false,
        language   : 'en',
        maxFiles   : 1,
        maxSize    : '2560*1600',
        multiple   : false,
        openTo     : 'COMPUTER',
        services   : [
            'BOX',
            'COMPUTER'
        ]
    }, function(res) {
    
        // save blob, to remove it later
        file = res;
    
        // store
        filepicker.store(file, {
            access    : 'public',
            container : 'YOUR_BUCKET',
            location  : 'S3',
            path      : 'SOME_FOLDER/ANOTHER_FOLDER/FILENAME.png'
        }, function(res) {
    
            // remove
            filepicker.remove(file, function() {
                console.log('ok')
            });
    
        });
    
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-14
      • 1970-01-01
      • 1970-01-01
      • 2014-08-18
      • 1970-01-01
      相关资源
      最近更新 更多