Javascript 从一个“重新分配上载的文件”;文件";输入到另一个

Javascript 从一个“重新分配上载的文件”;文件";输入到另一个,javascript,jquery,html,forms,Javascript,Jquery,Html,Forms,我有一个小帖子的表单,该设计希望表单中有一个图像文件上传器,并在用户选择图像文件后显示所选图像以替换表单上传器 现在,我打算在主表单(用于小帖子)之外创建另一个表单“图片上传”。当用户选择文件时,将提交图像上传表单,并通过AJAX将文件保存到服务器。图像上载表单中的字段将被隐藏 当然,由于位置的原因,我需要将图像文件选择器HTML放在mini post表单的HTML中。然后,如何将通过主窗体中的文件选择器选择的“文件”(而不仅仅是文件名)重新分配到图像上载窗体中的隐藏“文件”类型输入? 我不确定

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

现在,我打算在主表单(用于小帖子)之外创建另一个表单“图片上传”。当用户选择文件时,将提交图像上传表单,并通过AJAX将文件保存到服务器。图像上载表单中的字段将被隐藏

当然,由于位置的原因,我需要将图像文件选择器HTML放在mini post表单的HTML中。然后,如何将通过主窗体中的文件选择器选择的“文件”(而不仅仅是文件名)重新分配到图像上载窗体中的隐藏“文件”类型输入?

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

您可以使用

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

您可以使用


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

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


在Rails操作中,只需通过
params[:file]
访问此文件,然后使用来处理它。

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


在Rails操作中,只需通过
params[:file]
访问此文件,然后使用来处理它。

如果问题不清楚,请发表评论发送前是否尝试将文件移动到其他表单?是。我需要将文件移动到图像上传表单并提交此表单,尽管由于样式的原因,当前文件选择器放置在另一个表单中(用于迷你帖子)……我认为唯一的方法是不要将文件选择器放置在迷你帖子表单中。@fauxserious您认为这可行吗?或者,您将如何实现此功能?如果问题不清楚,请发表意见。您是否在发送前尝试将文件移动到其他表单?是。我需要将文件移动到图像上传表单并提交此表单,尽管由于样式的原因,当前文件选择器放置在另一个表单中(用于迷你帖子)……我认为唯一的方法是不要将文件选择器放置在迷你帖子表单中。@fauxserious您认为这可行吗?或者你将如何实现这一点?我在这个解决方案中使用了这个方法,它解决了我的问题!我已经将我的编辑更改为下面的答案,因为我看到我的编辑被覆盖了。如果你看到其他人正在编辑,那应该是我。我在这个解决方案中使用了这个方法,它解决了我的问题!我已经将我的编辑更改为下面的答案,因为我看到我的编辑被覆盖了。如果你看到其他人在编辑,那应该是我。哦,我看到你实际上在编辑另一篇文章。将您的解决方案添加到现有答案并不是一个好主意。为你自己的问题写一个答案是绝对可以的。哦,我看到你实际上在编辑另一篇文章。将您的解决方案添加到现有答案并不是一个好主意。为你自己的问题写一个答案是绝对可以的。
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({
    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);
    }
});