8

質問はblueimpからのjqueryファイルアップロードプラグインに関連しています

ファイルのアップロードがオプションであるフォームを作成しています。アップロードするファイルが選択されていない場合、フォームを投稿できないことがわかりました。このため、ページに2つのフォームを作成し、ユーザーが実際のデータを追加しないことを決定した場合は、アップロードされたファイルを削除するためにすべてのダーティチェックを実行する必要があります。

質問は :

ファイルが選択されていない場合でもフォームを送信して、サーバー側で追加のフォームデータを受信できるようにすることはできますか?

4

4 に答える 4

4

私自身も同じ問題を抱えています。blue imp angular実装を使用して、(Angularで構築された)フォームがあります。フォーム自体にはフィールドがあります。ファイルはオプションです。単一の投稿である必要があります (ファイルの有無にかかわらず)。

submit() では何も起こりません。

上記の「役立つイベント」は、ファイルが追加されたときにのみ発生します。

于 2014-01-27T22:40:58.043 に答える
1

私はパーティーに遅れていることを知っていますが、これまでのところ実際の解決策はありませんでした. 次のように add イベントを手動で呼び出すことにより、ファイルが追加されているという事実を偽装できます。

$('#fileupload').fileupload('add', { files: [{}] });

フォーム情報を保存する変数を設定し、追加時に変数を更新し、ファイルがない場合は上記のように追加をトリガーします。コードは次のようになります。

var fileData;
$('#fileupload').fileupload({
    add: function (e, data) {
        fileData = data;
    }
});

$('form').submit(function () {
    if (!fileData) {
        $('#fileupload').fileupload('add', { files: [{}] });
    }
    fileData.formData = params;
    fileData.submit();
    return false;
});

これにより、データがサーバーに渡される方法と一貫性を保つことができます。

于 2017-10-20T16:42:26.713 に答える
0

これは古い質問であることは知っていますが、同じ問題に苦しんでいた人のために:

ここでドキュメントを掘り下げる必要があります。

https://github.com/blueimp/jQuery-File-Upload/wiki/Options

また、役立つイベントのリストがあります。

$('#fileupload')
.bind('fileuploadadd', function (e, data) {/* ... */})
.bind('fileuploadsubmit', function (e, data) {/* ... */})
.bind('fileuploadsend', function (e, data) {/* ... */})
.bind('fileuploaddone', function (e, data) {/* ... */})
.bind('fileuploadfail', function (e, data) {/* ... */})
.bind('fileuploadalways', function (e, data) {/* ... */})
.bind('fileuploadprogress', function (e, data) {/* ... */})
.bind('fileuploadprogressall', function (e, data) {/* ... */})
.bind('fileuploadstart', function (e) {/* ... */})
.bind('fileuploadstop', function (e) {/* ... */})
.bind('fileuploadchange', function (e, data) {/* ... */})
.bind('fileuploadpaste', function (e, data) {/* ... */})
.bind('fileuploaddrop', function (e, data) {/* ... */})
.bind('fileuploaddragover', function (e) {/* ... */})
.bind('fileuploadchunksend', function (e, data) {/* ... */})
.bind('fileuploadchunkdone', function (e, data) {/* ... */})
.bind('fileuploadchunkfail', function (e, data) {/* ... */})
.bind('fileuploadchunkalways', function (e, data) {/* ... */});
于 2014-01-04T09:03:46.127 に答える