好的,我没有完整的答案,但过去几天我一直在试图弄清楚同样的事情。这是我的表单域:
<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 的问题。
无论如何,希望这对一些人有所帮助。如果您还想通了,请告诉我。