Android:使用多官方时未发送二进制照片



这是我写的代码,沿某些字符串将二进制文件发送到PHP Web应用程序服务器。

public void doRegister(final String userEmail, final String userPass, final File userPhotoId) {
    HttpClient myHttpClient = new DefaultHttpClient();
    new Thread(new Runnable() {
        @Override
        public void run() {
            try {
                HttpPost registerTry = new HttpPost(Constants.oAuthRegURL);
                MultipartEntity signupEntity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);
                signupEntity.addPart("email", new StringBody(userEmail, Charset.forName("UTF-8")));
                signupEntity.addPart("password", new StringBody(userPass, Charset.forName("UTF-8")));
                signupEntity.addPart("User[profilePicture]", new FileBody(userPhotoId, "image/jpeg"));
                registerTry.setEntity(signupEntity);
                HttpResponse signupHttpResp = myHttpClient.execute(registerTry);
            } catch (ClientProtocolException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            } catch (JSONException e) {
                e.printStackTrace();
            }
        }
    }).start();
}

文件 Userphotoid 是通过摄像头创建和返回的照片文件(我通过onActivityResult in on activityResult&创建一个来自该bitmap的文件对象的数据返回数据,然后从该位图创建一个文件对象。等)

所以问题是,该照片不会以这种方式发送到服务器。但是,如果我删除 mimeType in filebody 部分:

signupEntity.addPart("User[profilePicture]", new FileBody(userPhotoId));

二进制文件/照片已正确发送。但是,由于Web应用程序上所需的安全性,我需要为实体设置模拟类型,以检查传入文件以防止二进制恶意软件。所以谁能告诉我为什么在实体请求中使用MimeType时未发送文件?

P.S。我已经在项目的libs中导入httpclient-4.3.2,httpmime-4.3.2,httpcore-4.3.1,并使用SDK19。

编译。

好吧,我只是想出来了。用多官能设备布式写了整个东西。因此,有关发送二进制照片的行将是:

signupEntity.addBinaryBody("User[profilePicture]", userPhotoId, ContentType.create("image/jpeg"), ".profile.jpg");

相关内容

  • 没有找到相关文章

最新更新