Jquery ui jquery文件上载-如何覆盖文件而不是重命名

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 +

我正在努力更新Jquery文件上传插件,所以当你上传一个文件时,它只是用相同的名称覆盖一个现有的文件,而不是用upcount重命名它

我已应用此链接中包含的更改:

但我似乎无法覆盖这个插件来让它工作

这里有一个悬而未决的问题尚未回答:


如果您对此有任何指导,我们将不胜感激。

只需在回调中执行一个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。 因此,我找到了这个解决方案: 在func
get_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);
    }
}