我们使用JackUp在 Rails 中上传 ajax 图像。我们之所以选择它,是因为它不需要太多假设,而且重量很轻。
在它的示例代码之后,我们想出了这样的东西:
let jackUp = new JackUp.Processor({
path: '/images'
});
jackUp.on('upload:imageRenderReady', (e, options) => {
options.image.attr("data-id", options.file.__guid__).css({
border: "5px solid red"
});
$('[data-behavior=image-block-container]').prepend(options.image);
}).on("upload:sentToServer", (e, options) => {
$(`img[data-id='${options.file.__guid__}']`).css({
borderColor: 'yellow'
});
}).on("upload:success", (e, options) => {
$(`img[data-id='${options.file.__guid__}']`).css({
borderColor: "green"
});
}).on("upload:failure", (e, options) => {
alert(`'${options.file.name}' upload failed; please retry`);
$(`img[data-id='${options.file.__guid__}']`).remove();
});
$('.file-drop').jackUpDragAndDrop(jackUp);
$(document).bind('drop dragover', e => {
e.preventDefault();
});
这与一个图像上传按钮(归类为file-drop
)的预期一样。但是,一个页面将有未知数量的这些图像上传按钮。
当有多个上传按钮时,每次添加文件时,它都会附加到所有image-block-container
元素,而不仅仅是目标元素。似乎jackUp
没有触发它的元素的概念。
让每个上传按钮知道什么叫它的最佳方法是什么?我试过把它围成一个.on('drop'...
街区。这让我可以访问该元素,但 JackUp 的任何事件都没有触发。
任何有关轻量级 Rails 友好的 ajax 上传 gem 的帮助或建议都将不胜感激!