Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/214.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android:使用multipartentity时未发送二进制照片_Android_Httpclient_Multipartentity - Fatal编程技术网

Android:使用multipartentity时未发送二进制照片

Android:使用multipartentity时未发送二进制照片,android,httpclient,multipartentity,Android,Httpclient,Multipartentity,下面是我编写的代码,用于将二进制文件以及一些字符串发送到PHPWeb应用程序服务器 public void doRegister(final String userEmail, final String userPass, final File userPhotoId) { HttpClient myHttpClient = new DefaultHttpClient(); new Thread(new Runnable() { @Override

下面是我编写的代码,用于将二进制文件以及一些字符串发送到PHPWeb应用程序服务器

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是通过摄像头API创建和返回的照片文件(我在onActivityResult中获取通过摄像头返回的数据,并从中创建位图,然后从该位图创建文件对象等)

所以这里的问题是,照片不是以这种方式发送到服务器的。但是,如果我删除FileBody部分中的mimetype,如下所示:

signupEntity.addPart("User[profilePicture]", new FileBody(userPhotoId));
二进制文件/照片已正确发送。但是我需要为实体设置mimeType,因为web应用程序需要安全性来检查传入文件以防止二进制恶意软件。那么,有人能告诉我,为什么在实体请求中使用mimeType时不发送文件吗

p、 美国。
我已经在我的项目的libs中导入了httpclient-4.3.2、httpmime-4.3.2、httpcore-4.3.1,并使用sdk19编译。

好的,我刚刚算出来了一点;用MultipartEntityBuilder写下了整件事;因此,关于发送二进制照片的线路如下:

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