【发布时间】:2018-05-10 22:41:31
【问题描述】:
我正在尝试制作一个控件,您可以在其中选择要在表单中提交的文件并将文件放入其中以执行相同的操作。我有这样的东西,如果它是图像,它还会显示文件的预览:
<div class="preview-image-container">
<input type="file" name="File" id="File" accept="image/*"
class="image-url form-control" style="display:none;" />
<div class="preview-image-dummy"></div><img class="preview-image-url" />
<div class="preview-image-instruction">
<div class="preview-image-btn-browse btn btn-primary">Select file</div>
<p>or drop it here.</p>
</div>
</div>
用户将文件放在preview-image-container 中。文件未使用 AJAX 提交,用户需要提交包含更多数据的表单。
出于安全原因,我们不允许使用 JavaScript 更改输入文件的值。但是,我知道默认输入文件支持 droppable,并且有很多网站可以让我们通过将文件拖放到表单中来选择文件,所以我猜是有办法做到这一点的。
从 MCVE 中可以看出,我只对使用 jQuery 或纯 JavaScript 不感兴趣。
虽然可以使用 dropzone.js,但它不符合我的要求,并且需要大量时间来自定义其外观。此外,dropzone.js 有一些在我的 ASP.NET 应用程序中无法满足的配置要求。
有一个类似的问题,但没有正确答案:
How to set file object into input file in the form in HTML?
也不类似于drag drop images input file and preview before upload,因为我已经实现了拖放和预览动作。 我的问题是针对将文件放入父容器时输入空文件的问题。
【问题讨论】:
-
快速搜索显示这已被多次询问,例如:stackoverflow.com/questions/25092981/…
-
@freedomn-m 这个问题专门针对在放置时显示预览,我已经在这样做了。但是,删除时我的输入为空。
标签: javascript jquery forms file events