将上传的文件从一个“;文件“;将输入键入另一个

Reassign the uploaded file from one "file" type input to another

本文关键字:文件 另一个 输入 一个      更新时间:2023-09-26

我有一个迷你帖子的表单,设计希望在表单中有一个图像文件上传器,并在用户选择图像文件后显示所选图像来替换表单上传器。

现在,我打算有另一种形式,"图片上传",在主形式之外(对于迷你帖子)。当用户选择文件时,将提交图像上传表单,并通过AJAX将文件保存到服务器。图像上传表单中的字段将被隐藏。

当然,由于定位的原因,我需要将图像文件选择器HTML放置在迷你帖子表单的HTML中。然后,如何将通过主表单中的文件选择器选择的"文件"(而不仅仅是文件名)重新分配给图像上传表单中的隐藏"文件"类型输入

我不确定这是否可能。如果不可能,有什么建议可以实施这个设计?

使用@fauxerious提供的方法:用JQuery ajax(for Rails)发送此对象:

$.ajax({
    type: 'post',
    url: //action to handle this ajax,
    data: formdata,  // formdata is obtained from handleForm()
                     // it has a property "file".
    contentType: false,
    processData: false,
    dataType: 'json', // get back json
    success: function(output) {
      alert(output);
    }
});

在Rails操作中,只需通过params[:file]访问该文件,然后使用CarrierWave进行处理

您可能会使用FormData

function handleForm(){
    var formdata = new FormData();
    var file = $('input[type="file"]').prop('files')[0];
    if (file.type == 'image/jpeg') {
        formdata.append('file', file);
        return formdata;
    };
};

这将返回一个对象,您可以将其像数据一样从多部分表单传递到AJAX请求中。我在这里添加了一个条件来检查jpeg,但您可能需要使用自己的逻辑。