デバイスの専用パスからファイルを選択してサーバーに送信するアプリケーションがあります。
ksoap2 lib を使用して .NET Web サービスを呼び出し、ファイルをサーバーに送信しています。Base 64 エンコーディングを使用しています。
暗号化なしで 1MB、暗号化ありで 850Kb の最大サイズのファイルを送信できます。私が使用している暗号化アルゴリズムは 3DES です。
上記のサイズより大きいファイルを送信しようとすると、次のエラーが発生します。
私のテスト環境: API レベル 8 の Android エミュレーター、Android 2.2、および SDCard メモリ 512 MB
私が何かを見逃しているということですか?このシナリオで BLOB を使用すると役立ちますか
より大きなファイルを送信する方法はありますか? データ チャンクの送信について聞いたことがありますが、それについてはわかりません。リンクやサンプルコードは本当に役に立ちます。
次のコードを使用してファイル データを取得するには: here url = ファイルが保存されている場所
public byte[] getFileData( String vURL){
instream = new FileInputStream(vURL);
size = (int) vURL.length();
fileContent = new byte[size];
instream.read(fileContent);
}
次のコードを使用してデータをエンコードします。
byte[] res = Utilities.getFileData(file);
String mdata = android.util.Base64.encodeToString(res, android.util.Base64.DEFAULT);
サーバー側の Web サービスの呼び出しとサーバーへのデータの送信
SoapObject request = new SoapObject(nameSpace, methodName);
if (fileData != null && !fileData.equals("")) {
request.addProperty("vBLOBData", fileData);
}
SoapSerializationEnvelope envelope = getEnvelope(request);
HttpTransportSE ht = new HttpTransportSE(url); // ,3000
ht.debug = true;
ht.call(soapAction, envelope);
response = (envelope.getResponse()).toString();
1 MB を超えるファイルデータを送信できません。
前もって感謝します