8

Jquery ファイル アップロード プラグインの更新に苦労しているため、ファイルをアップロードすると、アップカウントで名前を変更するのではなく、既存のファイルを同じ名前で上書きするだけです。

このリンクで説明されている変更を適用しました: https://github.com/blueimp/jQuery-File-Upload/issues/1965

しかし、これを機能させるためにこのプラグインを上書きできないようですか?

ここでまだ回答されていない既存の未解決の質問があります: jQuery File Upload by bluimp, how to replace instead of renaming

これに関するガイダンスは大歓迎です。

4

7 に答える 7

4

MKoosejの修正に対する2016 UPDATE ! 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);
于 2016-04-01T14:10:56.923 に答える
2

同じファイル上書きオプションが必要でした。

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; */
}
于 2013-06-28T00:33:22.667 に答える
0

@MKoosej の解決策を試しました。私の場合はうまくいきましたが、trim_file_nameファイル名を1つだけ返すように編集しました(ファイル名をdata.csvに変換するアップローダーを実行する必要がありました)。また、名前を変更する代わりにファイル名を書き換える別のバージョンのアップローダーを作成する必要がありましたが、名前が異なる別のファイルは異なるままにする必要があります。そこで @MKoosej ソリューションを試してみると、ファイル名のない .jpeg のような拡張子のみのファイルのアップロードが開始されました。だから、私はこの解決策を見つけました:最初のfuncget_unique_filenameで私はこれを入れました:

$oldName=$name;

$oldName代わりに戻ってき$nameて大丈夫でした。

于 2015-06-24T10:38:14.800 に答える
0

github のドキュメント ( here ) を検討し、「アップロードのライフサイクル中にファイルを要素ノードに結び付ける方法」という箇所までスクロールします。これはコードです:

$(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.');
        }
    });
});

doneコールバック関数に注意してください。データオブジェクトを展開すると、 data.filesオブジェクトとdata.result オブジェクトがあることがわかります。 data.resultには、サーバー上のファイルの名前が含まれます。したがって、サーバーに新しくアップロードされたファイルの名前は、上記のスクリプト例に基づいてdata.result.files[0].nameになります。

これが誰かに役立つことを願っています

于 2013-07-21T06:12:59.490 に答える