如何从dropzone.js上传和删除文件
我已经使用下面的代码图像已被删除,但仍然显示缩略图图像。
Dropzone.options.myDropzone = { init: function() { this.on("success", function(file, response) { file.serverId = response; }); this.on("removedfile", function(file) { if (!file.serverId) { return; } $.post("delete-file.php?id=" + file.serverId); }); }
要删除缩略图,您必须启用addRemoveLinks:true,并使用dropzonejs中的“removedfile”选项
removedfile:从列表中删除文件时调用。 你可以听取这个,如果你想从你的服务器上删除文件。
addRemoveLinks: true, removedfile: function(file) { var _ref; return (_ref = file.previewElement) != null ? _ref.parentNode.removeChild(file.previewElement) : void 0; }
我还添加了一个ajax调用删除脚本,它看起来像这样:
addRemoveLinks: true, removedfile: function(file) { var name = file.name; $.ajax({ type: 'POST', url: 'delete.php', data: "id="+name, dataType: 'html' }); var _ref; return (_ref = file.previewElement) != null ? _ref.parentNode.removeChild(file.previewElement) : void 0; }
它在我身边,所以我希望它有帮助。
除了上面的最佳答案之外 – 删除空格并用破折号replace并转换为小写在dropzone.js文件中应用此js:
name=name.replace(/\s+/g, '-').toLowerCase();
到文件名处理 – 我编辑了dropzone.js文件和上面的ajax调用。 这样,客户端处理文件提交,并自动发送到PHP /服务器端,所以你不必在那里重做,它的url很安全。
在某些情况下,js根据function/命名而改变:
dropzone.js – 第293行(大约):
node = _ref[_i]; node.textContent = this._renameFilename(file.name.replace(/\s+/g, '-').toLowerCase());
dropzone.js – 746线(大约):
Dropzone.prototype._renameFilename = function(name) { if (typeof this.options.renameFilename !== "function") { return name.replace(/\s+/g, '-').toLowerCase(); } return this.options.renameFilename(name.replace(/\s+/g, '-').toLowerCase()); };
我把整个removeFile部分移到了dropzone.js的顶部,如下所示:
autoQueue: true, addRemoveLinks: true, removedfile: function(file) { var name = file.name; name =name.replace(/\s+/g, '-').toLowerCase(); /*only spaces*/ $.ajax({ type: 'POST', url: 'dropzone.php', data: "id="+name, dataType: 'html', success: function(data) { $("#msg").html(data); } }); var _ref; if (file.previewElement) { if ((_ref = file.previewElement) != null) { _ref.parentNode.removeChild(file.previewElement); } } return this._updateMaxFilesReachedClass(); }, previewsContainer: null, hiddenInputContainer: "body",
注意我还在html中添加了html:(div id =“msg”>)中的一个消息框,它将允许服务器端error handling/删除,以便将消息发送回给用户。
在dropzone.php中:
if(isset($_POST['id']){ //delete/unlink file echo $_POST['id'].' deleted'; // send msg back to user }
这只是在我身边的工作代码扩大。 我有3个文件,dropzone.html / dropzone.php / dropzone.js
显然你会创build一个js函数,而不是重复代码,但是因为命名改变了它适合我。 你可以传递一个js函数中的variables来处理文件名空格/字符等。
是的,您可以轻松地从数据库以及从服务器文件夹中删除文件。 我通过编写一个函数并调用delete.php并传递了fid作为参数来完成此操作:
function deletefile(value) { var xmlhttp; if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari xmlhttp=new XMLHttpRequest(); } else {// code for IE6, IE5 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.onreadystatechange=function() { if (xmlhttp.readyState==4 && xmlhttp.status==200) { alert(xmlhttp.responseText); } } xmlhttp.open("GET","delete.php?fid="+value,true); xmlhttp.send(); }
设置这样的fid
file.fid=responseText;
你可以从这里得到工作代码