9

私は非常に優れた jquery プラグインblueimp / jQuery-File-Uploadを使用しています

$('#fileupload').fileupload({
  autoUpload: true
, filesContainer: '#attachments_presentation tbody'
, stop: function (e) {
    console.log(data);
  }
});

そして、私は非常に単純なことをすることができません:アップロードされたファイルのリストを取得します
(サーバー上の名前で)

まず、単純にファイル入力に保存されるので、次のようにしてリストを取得できます

$('#fileupload').val();

しかし、そうではないので、私は次のようなことについて考えました

$('#fileupload').fileupload('getfiles');

ドキュメントから方法が見つかりません

サーバーにアップロードされたファイル名のリストを取得する方法を誰か教えてもらえますか?


アップデート

後でそれらを管理できるようにするために、サーバー上でアップロードされたファイル名を取得したいと思います。

例えば:

  • という名前のファイルをアップロードしますtrutruc.pdf
  • アップロードしますtest.png
  • という名前のファイルを再アップロードしますtrutruc.pdf
  • 最初のファイルを削除します

サーバー内のファイルの現在のリストはtest.pngtrutruc (2).pdf


更新 2

fileUpload に同梱されているデフォルトの php スクリプトを使用しています

4

10 に答える 10

9

デフォルトのプラグインをインスタンス化すると、以前にアップロードされたすべてのファイルを取得するコード部分があります(サーバーコードを変更していないと仮定します)。

main.jsファイルの70行目を参照してください。

    // Load existing files:
    $.ajax({
    // Uncomment the following to send cross-domain cookies:
    //xhrFields: {withCredentials: true},
    url: $('#fileupload').fileupload('option', 'url'),
        dataType: 'json',
        context: $('#fileupload')[0]
    }).done(function (result) {
        $(this).fileupload('option', 'done')
            .call(this, null, {result: result});
    });

コードをさらに調べるよりも、テンプレートが入力されるテーブルがあります。

<table role="presentation" class="table table-striped"><tbody class="files" data-toggle="modal-gallery" data-target="#modal-gallery"></tbody></table>

ファイルをロードした後、そのテーブルからそれぞれを簡単に解析できます。

$('tbody.files tr').each(function(i, e) {
    //according to @Brandon's comment it's now p.name
    var name = $(e).find('td.name').text(); 
    var size = $(e).find('td.size').text();
    //etc.
});
于 2013-03-16T11:29:45.387 に答える
2

これを試すこともできます

 $('#fileupload').bind('fileuploadcompleted', function (e, data) {
     var filess= data.result.files[0];
        var filenam = filess.name;
       alert(filenam);
});
于 2016-01-02T06:07:39.547 に答える
1

これはかなり古い投稿ですが、これは私にとって非常にうまくいったものなので、投稿することにしました。

  1. イベントを FileUploader にバインドします (私は main.js で行いました):

        $('#fileupload').bind('fileuploaddone', function (e, data) {
            FileUploadDone(e, data);
        });
    
  2. HTML ファイルで、次のコードを使用してファイル名を取得します。

    function FileUploadDone(e, data) {
    for (x in data._response.result.files){
        if (data._response.result.files[x].error == "")
            alert(data._response.result.files[x].name);
        else
            alert(data._response.result.files[x].error);
    }}
    

firebug でデータ オブジェクトを監視する必要があります。このオブジェクトは、ほとんどの情報をカプセル化します。

于 2015-04-30T20:10:29.017 に答える
1

サーバーからアップロードされたファイル名のリストを取得するには、サーバー側のコードが必要です。

UploadHandler.phpは、サーバー上のディレクトリにファイルをアップロードするために使用されます。

プラグイン アーカイブをダウンロードしてサーバーに抽出した場合、ファイルはデフォルトで php/files に保存されます。(php/files ディレクトリにサーバーの書き込み権限があることを確認してください。) https://github.com/blueimp/jQuery-File-Upload/wiki/Setupを参照してください。

UploadHandler.phpはまさにアップロード ハンドラです。サーバーに接続せずにサーバー ファイルにアクセスすることはできません。

JavaScript はサーバー上のファイルにアクセスできないため、そのためには php スクリプトが必要です。(ただし、JavaScript は、アップロード、名前変更、および削除されたすべてのものを追跡できる可能性があります。)

UploadHandler.phpを変更してデータベースに接続し、アップロード中にファイル パス (およびその他のデータ) をファイル テーブルに書き込むことができます。次に、標準の SQL クエリを介してファイルにアクセスできます。

UploadHandler.phpを変更します

  1. データベース接続パラメータを追加します
  2. SQL クエリ関数を作成する
  3. クエリを実行する 2 番目の関数を作成する
  4. 2 番目の関数を呼び出す

参照: https://github.com/blueimp/jQuery-File-Upload/wiki/Working-with-databases

于 2013-07-08T18:26:55.497 に答える
1

私は同じ問題を抱えていました.数時間と数十回のファイルアップロードの後、私はあなたが必要とする答えを持っていると思います:

done: function (e, data) {
    response = data.response();
    parsedresponse = $.parseJSON(response.result);
    console.log(parsedresponse.files);
}

ご覧のとおり、アップロードされたファイル名は次の場所にありますparsedresponse.files[i].url( iは、アップロードされたファイルの 0 から始まるインデックスです)。

わかりました...アップロードされたファイルのURLですが、最終的なファイル名を抽出できます...

それが役に立てば幸い。(これはドキュメントのどこにもありません。Firebugコンソールの出力を確認することで、この解決策にたどり着きました)

于 2013-06-21T20:56:41.400 に答える
0

ドキュメントに記載されているように、basic-plugin を使用している場合は、done 属性で関数にデータを渡す必要があります。これを変える:

stop: function (e) {

これに:

done: function (e, data) {

ドキュメントページの1つから取得した場合の停止についてはわかりませんが、ここでも同じことが適用され、データが利用できない場合はデータを操作できません。
この助けを願っています

于 2013-03-16T11:26:28.253 に答える
0

done メソッドを使用して、非表示の入力に名前を入力してから、それらを選択してみてください。

$('#fileupload').fileupload({
  autoUpload: true
, filesContainer: '#attachments_presentation tbody'
, stop: function (e) {
    console.log(data);
  }
, done: function(e,data){
            var filess= data.files[0];
            var filenam = filess.name;
            data.context.text(filenam+' uploaded successfully.');
            $('#formId').append('<input type="hidden" name="fileName" value="'+filenam+'"/>');
}
});
于 2013-03-16T11:37:28.407 に答える