javascript - 如何将文件附加到文件输入字段

标签 javascript jquery forms

我正在尝试创建文件拖放功能。

我可以从 div 进行拖放并处理文件。

现在我想将此文件附加到表单的 Input[type=file] 中。

我怎样才能做到这一点?

我尝试了 uploadFormData.append("files[]",f); 和衍生物,但它不起作用。我的调试是提交表单并检查标题以查看文件是否已发送。

有人能指出我如何实现这一目标的正确方向吗?

    <form enctype="multipart/form-data" id="yourregularuploadformId">
         <input type="file" name="files[]" multiple="multiple">
    </form>

<script>
      var uploadFormData = new FormData(jQuery("#yourregularuploadformId")[0]);

        function handleFileSelect(evt) {
        evt.stopPropagation();
        evt.preventDefault();

        var files = evt.dataTransfer.files; // FileList object.

        // files is a FileList of File objects. List some properties.

        var output = [];


        for (var i = 0, f; f = files[i]; i++) {
          output.push('<li><strong>', escape(f.name), '</strong> (', f.type || 'n/a', ') - ',
                      f.size, ' bytes, last modified: ',
                      f.lastModifiedDate ? f.lastModifiedDate.toLocaleDateString() : 'n/a',
                      '</li>');
               uploadFormData.append("files[]",f);
        }

        document.getElementById('list').innerHTML = '<ul>' + output.join('') + '</ul>';
      }
</script>

最佳答案

恐怕你不能这样做,因为你无法动态填充 <input type="file" ....>只是因为如果允许这样做,那就意味着您可以从用户的计算机上获取任何文件而无需任何验证。

您可以尝试绑定(bind)一个像 .change() 这样的事件在您的 div 上以在拖动文件时触发,然后在该绑定(bind)上进行 ajax 调用以上传文件,最后从 ajax 回调中获取文件名(或上传完成时您想要的任何内容)并处理它你想要的方式

关于javascript - 如何将文件附加到文件输入字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17063709/

相关文章:

javascript - jquery.show 未运行

javascript - 检查 JSON 对象是否为空

javascript - 使用 Twitter Bootstrap 切换单选按钮,获取表单输入的简洁方法是什么?

php 表单在线发送空数据,但在本地主机上工作正常

javascript - 比较 Cypress 中的两个日期值

javascript - 三.js:全局旋转

javascript - 使用 jquery 或 javascript 在悬停图像时更改 href 属性

javascript - 两个具有相同id的元素,想要选择一个包含在特定div中的元素

javascript - 通过 z-index 跟踪元素可见性

php - 以 laravel 形式更新按钮点击的数据库