可以使用什么编码将二进制数据发送到PHP?

时间:2013-03-14 06:13:58

标签: android network-programming

我正在尝试将存储在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服务的二进制数据?

1 个答案:

答案 0 :(得分: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更简洁。