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



我正试图将一些存储在Android手机上的二进制数据作为文件发送到用PHP创建的web服务。

我试过使用MultiPartValuePair,但没有成功。。!!

我还用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));

函数CCD_ 4为:

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中的默认编码是UTF-8。

你能在这里帮忙吗?如何将二进制数据从Android发送到PHP服务?

您可以使用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来更简洁。

最新更新