Jquery ui jquery文件上载-如何覆盖文件而不是重命名
我正在努力更新Jquery文件上传插件,所以当你上传一个文件时,它只是用相同的名称覆盖一个现有的文件,而不是用upcount重命名它 我已应用此链接中包含的更改: 但我似乎无法覆盖这个插件来让它工作 这里有一个悬而未决的问题尚未回答:Jquery ui jquery文件上载-如何覆盖文件而不是重命名,jquery-ui,jquery-plugins,file-upload,overwrite,blueimp,Jquery Ui,Jquery Plugins,File Upload,Overwrite,Blueimp,我正在努力更新Jquery文件上传插件,所以当你上传一个文件时,它只是用相同的名称覆盖一个现有的文件,而不是用upcount重命名它 我已应用此链接中包含的更改: 但我似乎无法覆盖这个插件来让它工作 这里有一个悬而未决的问题尚未回答: 如果您对此有任何指导,我们将不胜感激。只需在回调中执行一个ajax请求,即可开始上载并从数据盘中删除文件。您可以找到包含数据的文件名。文件[0]。名称 然后您只需使用旧链接搜索tr,如下所示: $("a[title='"+ data.files[0].name +
如果您对此有任何指导,我们将不胜感激。只需在回调中执行一个ajax请求,即可开始上载并从数据盘中删除文件。您可以找到包含数据的文件名。文件[0]。名称 然后您只需使用旧链接搜索tr,如下所示:
$("a[title='"+ data.files[0].name + "']").each(function () {
$(this).closest('tr').fadeOut();
});
然后淡出它
关于我需要相同的文件覆盖选项 使用PHP UploadHandler.PHP文件,我进行了一次非常快速的黑客攻击,这对我来说非常有效。 我相信有更好的方法,但这可能会帮助其他人 查找处理程序“upcount\u name\u callback”,并用去掉的(索引)编号替换返回语句。我留下了原始的返回语句,以防需要返回:)
如果您使用wiki中存在的UploadHandler.php,那么就很简单了。在get_file_name方法中,应替换此行:
return $this -> get_unique_filename($this -> trim_file_name($name, $type, $index, $content_range), $type, $index, $content_range);
为此:
return $this -> trim_file_name($name, $type, $index, $content_range);
考虑github()上的文档,并向下滚动到其中显示“如何在上传的生命周期中将文件绑定到元素节点”。代码如下:
$(function () {
$('#fileupload').fileupload({
dataType: 'json',
add: function (e, data) {
data.context = $('<p/>').text('Uploading...').appendTo(document.body);
data.submit();
},
done: function (e, data) {
data.context.text('Upload finished.');
}
});
});
$(函数(){
$('#fileupload')。fileupload({
数据类型:“json”,
添加:功能(e、数据){
data.context=$(“”).text('Uploading…).appendTo(document.body);
data.submit();
},
完成:功能(e,数据){
data.context.text('Upload finished');
}
});
});
请注意done回调函数。如果展开数据对象,您将注意到有一个数据.files对象以及一个数据.result对象data.result包含服务器上文件的名称。因此,服务器上新上载的文件名为data.result.files[0].name,基于上面给出的示例脚本
我希望这对某人有所帮助我尝试了@MKoosej的解决方案。在我的例子中,它工作得很好,但我也编辑了
trim_file_name
,在这里我只返回一个文件名(我必须做一个上传程序,将任何文件名转换为data.csv)。另外,我还必须制作另一个版本的uploader,我应该重写文件名而不是重命名,但是不同名称的不同文件应该保持不同。所以当我尝试@MKoosej解决方案时,它开始上传只有扩展名的文件,比如没有文件名的.jpeg。
因此,我找到了这个解决方案:
在funcget_unique\u filename
中,我在一开始就指出:
$oldName=$name;
并返回了$oldName
而不是$name
,一切正常。2016年更新到的修复程序!
在UploadHandler.php中→ 受保护的函数获取文件名。。。
替换
与
Anno 2018这也可以工作(PHP 7.1):
它避免了更改原始代码,而原始代码可以用作库。您是否找到了覆盖文件的解决方案?我也需要它。谢谢看这里:很抱歉,但我不明白一个表行上的DOM操作与手头的问题有什么关系,甚至你建议在上传之前删除文件……哈哈,伙计,你的解决方案帮了我的忙,但实际上这在我的情况下不起作用。我会写我自己的答案。其他解决方案不再适用于上传的新版本(2016+)。这个有。
$oldName=$name;
return $this->get_unique_filename(
$file_path,
$this->fix_file_extension($file_path, $name, $size, $type, $error,
$index, $content_range),
$size,
$type,
$error,
$index,
$content_range
);
return $this -> trim_file_name($file_path, $name, $size, $type, $error, $index, $content_range);
class MyUploadHandler extends UploadHandler
{
public function __construct($options = array(), $initialize = true, $error_messages = null) {
$options += array(
'overwrite_existing' => true
);
parent::__construct($options, $initialize, $error_messages);
}
protected function get_unique_filename($file_path, $name, $size, $type, $error, $index, $content_range) {
if ($this->options['overwrite_existing'] ?? false) {
return $name;
}
return parent::get_unique_filename($file_path, $name, $size, $type, $error, $index, $content_range);
}
}