1

Androidフォンにファイルとして保存されているバイナリデータをPHPで作成されたWebサービスに送信しようとしています。

使ってみMultiPartましValuePairたが運が悪かったです。

また、Javaでコンソールアプリケーションを作成しました。これは、Windowsの静的な場所からバイナリファイルを読み取り、同じPHPサービスを使用しMultiPartます。これは、以下を使用して正常に動作します。そのためのコードは次のとおりです。

MultipartEntity mpEntity = new MultipartEntity();
ContentBody cbFile = new FileBody(file,"text/plain");      
mpEntity.addPart("qLog", new StringBody(readFileAsString(file.getAbsolutePath()),
        Charset.defaultcharset)));
mpEntity.addPart("fileName", new StringBody(fileName));
mpEntity.addPart("personid", new StringBody(userid));

関数readFileAsString()は次のとおりです。

private String readFileAsString(String filePath) throws IOException {
    StringBuffer fileData = new StringBuffer();
    BufferedReader reader = new BufferedReader(new FileReader(filePath));
    char[] buf = new char[1024];
    int numRead=0;
    while ((numRead=reader.read(buf)) != -1) {
        String readData = String.valueOf(buf, 0, numRead);
        fileData.append(readData);
    }
    reader.close();

    return fileData.toString();
}

しかし、Androidでこれを行うと、バイナリ値が維持されません。私が思う理由は、AndroidのデフォルトのエンコーディングがUTF-8であるためです。

ここで手伝ってもらえますか?AndroidからPHPサービスに送信されたバイナリデータを取得するにはどうすればよいですか?

4

1 に答える 1

0

InputStreamBody代わりに使用できますStringBody

MultipartEntity mpEntity = new MultipartEntity();
mpEntity.addPart("qLog", new InputStreamBody(new FileInputStream(file),
        file.getName());
mpEntity.addPart("fileName", new StringBody(fileName));
mpEntity.addPart("personid", new StringBody(userid));

編集済み

FileBodyまたは、より簡潔に使用できます。

于 2013-03-14T08:30:43.803 に答える