我很努力,当你把它上传只是覆盖具有相同名称的现有文件,而不是与UPCOUNT重命名的文件更新jQuery的文件上传插件等等。
我已经申请涵盖在这个环节上的变化: https://github.com/blueimp/jQuery-File-Upload/issues/1965
但我似乎无法覆盖这个插件来得到这个工作?
有一个现有的开放的问题在这里还没有回答: 通过bluimp jQuery的文件上传,如何更换,而不是重命名
在这个任何指导,将不胜感激。
我很努力,当你把它上传只是覆盖具有相同名称的现有文件,而不是与UPCOUNT重命名的文件更新jQuery的文件上传插件等等。
我已经申请涵盖在这个环节上的变化: https://github.com/blueimp/jQuery-File-Upload/issues/1965
但我似乎无法覆盖这个插件来得到这个工作?
有一个现有的开放的问题在这里还没有回答: 通过bluimp jQuery的文件上传,如何更换,而不是重命名
在这个任何指导,将不胜感激。
如果您在使用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);
2016更新到MKoosej的修复! 在UploadHandler.php→保护功能get_file_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);
我需要相同的文件覆盖选项。
使用PHP UploadHandler.php文件我做了一个非常快速破解这对我的作品。 我敢肯定有一个更好的办法,但是这可能帮助别人。
寻找处理“upcount_name_callback”并替换为(指数)return语句编号方式取出。 我离开的情况下,我需要回到原来return语句:)
protected function upcount_name_callback($matches) {
$index = isset($matches[1]) ? intval($matches[1]) + 1 : 1;
$ext = isset($matches[2]) ? $matches[2] : '';
return ''.$ext;
/* return ' ('.$index.')'.$ext; */
}
考虑在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.');
}
});
});
注意做回调函数。 如果展开数据对象你会注意到有一个data.files对象以及一个data.result对象。 data.result包含服务器上的文件的名称。 因此,在服务器上新上载的文件的名称是根据上面给出的示例脚本data.result.files [0]。名称 。
我希望这可以帮助别人
我试图@MKoosej的解决方案。 在我的情况下,它工作得很好,但我还编辑trim_file_name
,我让它返回只有一个文件名(我不得不这样做哪些改变任何文件名data.csv的上传)。 此外,我不得不作出上传,我应该重写文件名,而不是重命名,但具有不同名称的不同文件应该保持不同的其他版本。 所以,当我试图有@MKoosej解决它开始上传文件,就像没有文件名.JPEG唯一的扩展。 所以,我发现这个解决方案:在FUNC get_unique_filename
在一开始我把这个:
$oldName=$name;
并返回$oldName
,而不是$name
,它是罚款。
安诺2018这可能是工作,以及(PHP 7.1):
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);
}
}
它避免了必须改变原来的代码,其然后可以被用作一个库。
只是做回调中一个Ajax请求开始上传和擦除数据磁盘上的文件。 你可以找到的文件名withing data.files [0]。名称。
然后你只需搜索与旧的链接,这样的TR:
$("a[title='"+ data.files[0].name + "']").each(function () {
$(this).closest('tr').fadeOut();
});
并淡出出来。
问候