0

有人可以向我展示一个在我的 Rails 表单上传文件后如何获取亚马逊 S3 url 的示例吗?当我使用时,我的应用程序有 filepicker.io/etc/etc url,但我想要实际的 amazon url。

https://github.com/Ink/filepicker-rails#accessing-filepicker-file-with-onchange

4

1 回答 1

0

好的,我没有完整的答案,但在过去的几天里,我一直在试图弄清楚同样的事情。这是我的表单字段:

<div class="filepicker">
    <%= f.label :filepicker_url, "Upload an image:" %>
    <%= f.filepicker_field :filepicker_url, dragdrop: true, mimetypes: 'image/*', onchange: 'onImageUpload()', button_class: "btn btn-gray", id: "filepicker" %>
</div>

这是与之配套的js:

var base_url = "https://s3-us-west-2.amazonaws.com/YOUR_S3_BUCKET/"

function onImageUpload() {
    filepicker.pickAndStore(

      {mimetype:"image/*"},

      {location:"S3", access: "public"}, 

      function(InkBlobs){
        var key = (JSON.stringify(InkBlobs[0].key));
        key = key.replace("\"","");
        var url = base_url + key;
        $('#filepicker').val(url);
        console.log($('#filepicker').val());
      }, 

      function(FPError){
        console.log(JSON.stringify(FPError));
      });
}

这是为了将您的文件/图像存储在您自己的 s3 存储桶中并直接使用该 url(减少对墨水的依赖)。S3 url 是您的基本 url 加上 InkBlob 中返回的 s3 密钥。我正在尝试使用 jquery 将 url 插入到我的输入字段中......但由于某些未知原因,它不会与我的用户一起保存。我可以看到它正在使用 console.log 在我的输入字段中输入,但不知道为什么它没有被保存。

我也遇到了与 iframe 不匹配的协议(http 与 https)的问题。尽管我还不能存储 filepicker_url,但我一直在阅读有关 turbolinks 的问题。

无论如何,希望这对一些人有所帮助。让我知道你是否知道更多。

于 2013-09-20T18:53:28.600 回答