使用dropzone.js从web应用程序上传文件
Uploading a file from a web app with dropzone.js
我正在构建一个web应用程序。我必须让用户上传图片或将图片拖放到浏览器中。为了帮助实现这一点,我使用了dropzone.js。我的挑战是,我需要对外观进行一些自定义。
我的定制需要在dropzone.js中看起来很前卫的功能。基本上,我需要:一次只能上传一个文件。上传文件时,我需要显示进度条。上传后,我需要让用户a)删除现有图片或b)用另一张图片替换图片。为了做到这一点,我目前有以下HTML:
<div id="myDropZone" style="cursor:pointer;">
<div class="files" id="previews">
<div id="template" class="file-row">
<ul class="list-inline">
<li>
<span class="preview" style="width:300px;"><img data-dz-thumbnail /></span>
<p class="size" data-dz-size></p>
</li>
<li style="vertical-align:top;">
<ul id="pictureActions" class="list-unstyled">
<li>
<button class="btn btn-default dz-clickable file-input-button">
<i class="glyphicon glyphicon-picture"></i>
<span>Pick...</span>
</button>
</li>
<li>
<button data-dz-remove class="btn btn-danger btn-block" style="margin-top:8px;">
<i class="glyphicon glyphicon-trash pull-left"></i>
<span>Delete</span>
</button>
</li>
</ul>
</li>
</ul>
<div id="uploadProgress" class="progress" role="progressbar" aria-valuemin="0" aria-valuemax="100" aria-valuenow="0">
<div class="progress-bar progress-bar-warning" style="width:0%;" data-dz-uploadprogress>
<span>Please wait...</span>
</div>
</div>
</div>
</div>
<div id="uploadPrompt">Drag-and-drop a picture here</div>
</div>
我正在使用以下JavaScript将此代码初始化为dropzone:
$(function () {
var previewNode = document.querySelector("#template");
previewNode.id = "";
var previewTemplate = previewNode.parentNode.innerHTML;
previewNode.parentNode.removeChild(previewNode);
var pictureDropZone = new Dropzone("div#myDropZone", {
url: "/pictures/upload",
clickable: true,
uploadMultiple: false,
autoProcessQueue: true,
previewTemplate: previewTemplate,
previewsContainer: "#previews",
init: function () {
this.on("complete", function (data) {
$('#pictureActions').show();
$('#uploadProgress').hide();
$('#uploadPrompt').hide();
});
},
uploadprogress: function (e, progress) {
$('#uploadProgress').css('width', progress);
},
removedfile: function () {
$('#previews').hide();
$('#uploadPrompt').show();
}
});
});
不过也有几个问题。如果单击文本Drag-and-drop a picture here
,则文件选择器不会打开。如果我在文本之外单击,则会打开文件选择器。此外,此代码适用于选择文件的初始过程。但是,如果我点击"选择…"按钮,页面就会返回。事实上,我期待着文件选择器再次出现。如果我单击"删除"按钮,然后从文件选择器中再次选择一个文件,则图片、上传进度和操作按钮永远不会出现。
我觉得我不知怎么搞砸了dropzone的初始化。我做错了什么?如果单击提示文本,为什么我不能选择另一张图片、删除图片并选择另一个图片或打开文件选择器?
我已经更改了您的代码
this.on("complete", function (data) {
$("#previews").show(); //This line added ... and it's worked...
$('#pictureActions').show();
$('#uploadProgress').hide();
$('#uploadPrompt').hide();
});
我想那行:$('#previews').hide();
你有隐藏的预览元素,当你附加新图像时,这不会改变状态。:)。
这个词,但是,你可以看到你添加的旧图片,我认为这是一个新的bug。。。我试着解决它…你有想法吗?
http://jsfiddle.net/qek0xw1x/15/
相关文章:
- 使用Node.js在应用程序引擎上进行本地单元测试
- 谷歌应用程序脚本上有承诺吗
- 在全球范围内强制ng严格di,而不仅仅是在ng应用程序级别上
- 如何加载/构建 Chrome 应用/扩展程序并以编程方式运行
- Krajee 引导程序文件上传插件仅接受图像文件类型
- 在 ipad 应用程序网页上触发 HREF
- 从谷歌应用程序脚本上的json发布到Facebook
- 我可以用谷歌应用程序脚本上传多个文件吗
- 在应用程序代码上运行Google Closure编译器后,更新AngularJS模板HTML
- 如何将变量从python应用程序传递到google应用程序引擎上的客户端javascript
- 使用表单输入访问相机,并使用web应用程序立即上传照片
- 如何在我的移动应用程序(cordova)上启用跨域资源共享,它连接到API(在Yii中)
- 页面过渡像iPhone应用程序feedly上的phonegap
- 当用户在应用程序图标上键入时,如何触发一些代码
- 在web应用程序相机上覆盖透明png
- 我如何从谷歌应用程序脚本上的CalendarEvent对象获得颜色
- 如何禁用Web应用程序浏览器上的关闭按钮
- 谷歌应用程序脚本上的代码安全问题
- <脚本>标签在桌面浏览器上有效,但在移动设备(MEAN 应用程序)上不起作用
- 混合应用程序在上传图像时关闭而不会在logcat中出现任何错误