使用“键值”格式的多部分将图像上传到服务器

Posted

技术标签:

【中文标题】使用“键值”格式的多部分将图像上传到服务器【英文标题】:Upload an image to server using multipart with "key-value" format 【发布时间】:2016-02-29 11:01:36 【问题描述】:

我正在尝试上传带有一些数据的图像,例如我想以键值格式发送数据:

(关键是图像)- “图像”,图像 (键是用户名)- "username", "abc@abc.com"

但是这里用于上传图像服务器端编码使用“Multipart”,任何人都可以建议我如何使用这种 key-value json 格式发送 multipart 格式的图像?

这是我的申请:

String lineEnd = "\r\n";
String twoHyphens = "--";
String boundary = "xxxxxxxx";
String EndBoundary = "";

String str = twoHyphens + boundary + lineEnd;
String str2 = "Content-Disposition: form-data; name=\"username\"";
String str3 = "abc@abc.com";
String str4 = "Content-Disposition: form-data; name=\"imgName\"";
String str5 = "Content-Type: image/jpeg";
String str6 = twoHyphens + boundary + twoHyphens;

StrTotal = str + str2 + "\r\n" + str3 + "\r\n" + str
            + str4 + "\r\n" + str5 + "\r\n"+"\r\n"+ encodedImage + "\r\n" + str6;

这是多部分代码,现在我想把它从 json 格式发送到服务器。

List<NameValuePair> param = new ArrayList<NameValuePair>();
param.add(new BasicNameValuePair("username", "abc@abc.com"));
param.add(new BasicNameValuePair("image", ???));

还有这个参数值到服务器,但是如何用这个发送那个多部分数据呢?

【问题讨论】:

看这里:***.com/questions/27579519/… How to upload multipart form data and image to server in android?的可能重复 【参考方案1】:

你可以这样做

    public void uploadUserPhoto(File image) 

    try 

        HttpPost httppost = new HttpPost("some url");

        MultipartEntity multipartEntity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);  
        multipartEntity.addPart("Title", new StringBody("Title"));
        multipartEntity.addPart("Nick", new StringBody("Nick"));
        multipartEntity.addPart("Email", new StringBody("Email"));
        multipartEntity.addPart("Description", new StringBody(Settings.SHARE.TEXT));
        multipartEntity.addPart("Image", new FileBody(image));
        httppost.setEntity(multipartEntity);

        mHttpClient.execute(httppost, new PhotoUploadResponseHandler());

     catch (Exception e) 
        Log.e(ServerCommunication.class.getName(), e.getLocalizedMessage(), e);
    

【讨论】:

以上是关于使用“键值”格式的多部分将图像上传到服务器的主要内容,如果未能解决你的问题,请参考以下文章

使用 Retrofit 上传 JSON 格式的多部分图像数据?

在IOS中上传带参数的多部分图像

Android 相机图像未上传到服务器。使用多部分数据 Http post

ios中的多部分表单上传,它是如何完成的?

如何将图像上传到服务器?使用多部分?

使用 PHP 在 Swift 5 中使用 Alamofire 接收图像上传