除了上面最好的答案 - 要删除空格并用破折号替换并转换为小写,请在dropzone中应用此js.js文件:
name = name.replace(/\s+/g, '-').toLowerCase();
到文件名处理 - 我编辑了文件和上面的ajax调用。这样,客户端处理文件命名,并自动将其发送到PHP /服务器端,因此您不必在那里重做它,并且它非常安全。dropzone.js
在某些情况下,js根据函数/命名而变化:
放置区.js - 第 293 行(大约):
node = _ref[_i];
node.textContent = this._renameFilename(file.name.replace(/\s+/g, '-').toLowerCase());
下降区.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());
};
我将整个部分移到了顶部,如下所示:removedFile
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"></div>
在拖放区中.php:
if (isset($_POST['id']) {
//delete/unlink file
echo $_POST['id'] . ' deleted'; // send msg back to user
}
这只是我这边工作代码的扩展。我有3个文件,dropzone.html,dropzone.php,dropzone.js
显然,你会创建一个js函数而不是重复代码,但由于命名更改,它适合我。您可以自己在 js 函数中传递变量来处理文件名空格/字符 /等。