2

iOS 4.3 用の Appcelerator SDK 1.6.2 で開発しています

サーバーに複数のファイルをアップロードしようとしています。問題は、ファイルの数が動的であるため、XHR 送信のパラメーターで事前に決定できないことです。

1 つのファイルを渡すと問題なく動作しますが、多くのファイルを渡す方法がわかりません。

メディア要素を保持する配列を作成しようとしましたが、サイコロはありません。

var media = [];
for(var i = 0; i < sync.images.length; i++){
     media[i] = Titanium.Filesystem.getFile(sync.images[i].path).read();
}

xhr.send({
    media: media // no workie
//  media: media[1] workie
});

この記事を見つけました: http://developer.appcelerator.com/question/123794/multiple-file-upload-in-one-request

これは、次のコードが機能することを前提としています。

 xhr.send({      
     'media[]': imageFile.read(),
     'media[]': imageFile2.read()
 });

ただし、転送される画像の数が異なる可能性があるため、これを動的に取得する方法がわかりません

提案は素晴らしいでしょう

4

3 に答える 3

1

私もこの問題に遭遇し、現在マークされている回答はうまくいきませんでした。いくつかのデバッグの後、より良い解決策を見つけました。

最初にパラメータを設定します (注: 追加のキー/値が必要ない場合は {} のままにしてください)。

var parameters = {'extraKey': 'extraValue'};

その後、ファイルをループしてパラメーターに追加します。

for(var i in files) parameters['files[' + i +']'] = files[i];

ループ後、パラメータは次のようになります。

{'extraKey':'extraValue', 'file[0]': files[0], 'file[1]': files[1] }

これで、次のように送信できますxhr.send(parameters);

5年遅れですが、私もここに来ました^^.

于 2016-11-04T15:37:46.257 に答える