如何通过文件上传发送字符串参数?

时间:2018-11-02 10:31:19

标签: android

在我的android项目中,我上传了带有图片类别的图片。有什么方法可以与我的上传文件一起发送类别字符串?

这是我的上传代码,我该如何发送类别字符串:

FileInputStream fileInputStream = new FileInputStream(sourceFile);

URL url = new URL(upLoadServerUri);
conn = (HttpURLConnection) url.openConnection(); 
conn.setDoInput(true); 
conn.setDoOutput(true); 
conn.setUseCaches(false); 
conn.setRequestMethod("POST");
conn.setRequestProperty("Connection", "Keep-Alive");
conn.setRequestProperty("ENCTYPE", "multipart/form-data");
conn.setRequestProperty("Content-Type", "multipart/form-data;boundary=" + boundary);
conn.setRequestProperty("uploaded_file", fileName); 
dos = new DataOutputStream(conn.getOutputStream());
dos.writeBytes(twoHyphens + boundary + lineEnd); 
dos.writeBytes("Content-Disposition: form-data; name="uploaded_file";filename=""
   + fileName + """ + lineEnd);
dos.writeBytes(lineEnd);

2 个答案:

答案 0 :(得分:0)

解决该问题的一种方法是,发送一个以“ imageContent”和“ imageCategory”为属性的JSON对象字符串,在Android客户端上将图像内容编码为base64字符串,然后在后端将其解码为正常状态。

Bitmap currentPhotoBitmap = BitmapFactory.decodeFile(mCurrentPhotoPath);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
currentPhotoBitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);
byte[] currentPhotoBitmapAsByteArray = baos.toByteArray();
base64Image = Base64.encodeToString(currentPhotoBitmapAsByteArray, Base64.DEFAULT);

如果您想这样做,则应更改标题以匹配文本要求。

答案 1 :(得分:0)

这更多是一个常见问题“如何在HTTP请求中包含信息”。 一种选择是将其添加为HTTP标头。

在您的示例中,通过添加以下内容即可实现:

conn.setRequestProperty("X-Image-Category", someCategory);

这里没有涉及的是,服务器还需要读取此标头并使用类别进行某些操作。