java - 如何在 Android 中使用多部分实体将图像与数据一起发布
问题描述
我正在使用带数据的 MultipartEntity 上传图像,但我无法发布。我必须与图像一起发布一些细节。我不知道问题出在哪里,并且在发布它不起作用时也调试我的代码。我不知道如何解决这个问题。
File file1 = new File(selectedPath1);
String urlString = "url";
try
{
HttpClient client = new DefaultHttpClient();
HttpPost post = new HttpPost(urlString);
FileBody bin1 = new FileBody(file1);
MultipartEntity reqEntity = new MultipartEntity();
reqEntity.addPart("uploadedfile", bin1);
reqEntity.addPart("Firstname", new StringBody("Firstname"));
reqEntity.addPart("Mobilenumber", new StringBody("Mobilenumber"));
post.setEntity(reqEntity);
HttpResponse response = client.execute(post);
resEntity = response.getEntity();
final String response_str = EntityUtils.toString(resEntity);
if (resEntity != null) {
Log.i("RESPONSE",response_str);
runOnUiThread(new Runnable(){
public void run() {
try {
res.setTextColor(Color.GREEN);
res.setText("n Response from server : n " + response_str);
Toast.makeText(getApplicationContext(),"Upload Complete. Check the server uploads directory.", Toast.LENGTH_LONG).show();
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
}
catch (Exception ex){
Log.e("Debug", "error: " + ex.getMessage(), ex);
}
解决方案
经过长时间的研究,我能够将带有数据的图像发布到服务器。我按照下面的链接并根据我的要求进行修改。我认为这对任何人都有帮助。捕获图片非常有用,而且我可以使用此链接发布带有数据的图像
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost(urlString);
try {
CustomMultiPartEntity entity=new CustomMultiPartEntity(new CustomMultiPartEntity.ProgressListener() {
@Override
public void transferred(long num) {
publishProgress((int) ((num / (float) totalSize) * 100));
}
});
entity.addPart("FirstName", new StringBody(Person.getFirstName()));
entity.addPart("LastName", new StringBody(Person.getLastName()));
entity.addPart("Email", new StringBody(Person.getEmail()));
entity.addPart("Password", new StringBody(Person.getPassword()));
entity.addPart("Mobilenumber", new StringBody(Person.getMobilenumber()));
entity.addPart("uploadedfile", new FileBody(sourceFile));
totalSize = entity.getContentLength();
httppost.setEntity(entity);
HttpResponse response = httpclient.execute(httppost);
HttpEntity r_entity = response.getEntity();
responseString = EntityUtils.toString(r_entity);
} catch (ClientProtocolException e) {
responseString = e.toString();
} catch (IOException e) {
responseString = e.toString();
}
推荐阅读
- python - 为什么 Python 内置函数与“is”关键字的交互方式不同?
- shell - 如何使 docker 入口点仅针对某些特定命令以非 root 身份运行
- python - GUI class using functions before class creation
- python - 无法在 Windows 中安装 pycocotools:致命错误 C1083:无法打开包含文件:'io.h':没有此类文件或目录错误:
- ethereum - 在 Truffle 上测试部署的智能合约
- c++ - conditional statement in loop c++
- ajax - Why am I getting 'Symfony2 No route found for "GET /module/%3C" ...', when similar calls work
- mongodb - Formatting MongoDB aggregation for Highcharts Stacked Columns
- html - Can't use column-count in media query
- python-3.x - 触发 lamda 功能时,我无法删除 tmp 文件夹中的图像