android 调用httpclient写的服务器上传图片为什么就是传不上去呢
package com.image.upload;
import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUpload;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
public class UploadAction extends HttpServlet {
public UploadAction() {
super();
}
public void destroy() {
super.destroy(); // Just puts "destroy" string in log
// Put your code here
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
System.out.println("图片上传路径-------》");
this.doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String path = request.getContextPath();
DiskFileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload fileUpload = new ServletFileUpload();
fileUpload.setSizeMax(10 * 1024 * 1024);
fileUpload.setFileSizeMax(10 * 1024 * 1024);
List<FileItem> list = null;
System.out.println("图片上传路径-------》");
try {
list = fileUpload.parseRequest(request);
for (FileItem item : list) {
if(!item.isFormField())
{
String imageString = item.getName();
String file_upload_path=request.getRealPath("/upload")+"/"+imageString;
System.out.println("图片上传路径-------》"+file_upload_path);
item.write(new File(file_upload_path));
}
}
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
public void init() throws ServletException {
// Put your code here
}
}
手机端
main activity:
package com.example.android_camera_upload;
import java.io.ByteArrayOutputStream;
import org.apache.http.util.ByteArrayBuffer;
import com.example.android_camera_upload.R;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
public class MainActivity extends Activity {
private Button button1;
private Button button2;
private ImageView imageview1;
private byte[] image_data; // 存儲圖片的數據
private final String upload_pathString="http://166.111.82.103:8080/uploadImage/UploadAction";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button1 = (Button) findViewById(R.id.button1);
button2 = (Button) findViewById(R.id.button2);
imageview1 = (ImageView) findViewById(R.id.imageView1);
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent = new Intent(
android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intent, 1000);
}
});
button2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Log.i("调试信息","执行post");
HttpPostUtils.sendFormByPost(upload_pathString, image_data, "aa.png");
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 1000 && resultCode == RESULT_OK) {
Bundle bundle = data.getExtras();
Bitmap bm = (Bitmap) bundle.get("data");
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
bm.compress(Bitmap.CompressFormat.PNG, 50, outputStream);
image_data = outputStream.toByteArray();
imageview1.setImageBitmap(bm);
}
}
}
工具类HttpPostUtils
package com.example.android_camera_upload;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.mime.MultipartEntity;
import org.apache.http.entity.mime.content.ByteArrayBody;
import org.apache.http.impl.client.DefaultHttpClient;
import android.util.Log;
public class HttpPostUtils {
public static void sendFormByPost(final String path,
final byte[] fileBody, final String fileName) {
boolean flag = false;
new Thread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
try {
HttpClient httpClient=new DefaultHttpClient();
Log.i("調試信息","111");
HttpPost httpPost=new HttpPost(path);
Log.i("調試信息","2");
MultipartEntity entity=new MultipartEntity();
Log.i("調試信息","3");
entity.addPart("myfile",new ByteArrayBody(fileBody, fileName));
Log.i("調試信息","4");
httpPost.setEntity(entity);
Log.i("調試信息","5");
httpClient.execute(httpPost);
Log.i("調試信息","6");
} catch (Exception e) {
Log.i("調試信息","错误");
e.printStackTrace();
// TODO: handle exception
}
}
}).start();
// return flag;
}
}
所有的调试信息都出现而且也不报任何错误但是服务器端就是没有反应,没有报错,这是为什么!!
相关推荐
前端开发组件示例源码_f1b6a91d详解
前端开发组件示例源码_f1b6a91d,内容包含源码/脚本与使用说明文档,结构清晰、注释完整,适合学习参考与二次开发,下载解压即可查看。
前端开发基于history.js的HTML5与HTML4浏览器兼容方案:单页应用无刷新历史状态管理技术实现-Gjl4Gf1792158475
内容概要:本文系统介绍了如何利用history.js实现单页应用(SPA)在HTML5c与HTML4浏览器间s草错发的无缝历史状态管理。通过封装原生History API并在不支持的浏览器中自动降级为哈希路由,history.js解决了因浏览器兼容性导致的后退按钮失效、URL混乱等问题。文章详细讲解了其核心机制,包括状态对象管理、自动模式切换(HTML5 pushState vs HTML4 哈希)、状态数据持久化以及针,对Safari、IE等浏\览器的兼容性修复方案,并提供了从入门到实战的完整示例,涵盖初始化、事,件监听、页面加载及性能优化技巧。;Gjl4Gf1792158475 www.gblp.net www.gsctlq.com gezhixq.cn www.greendalian.com wap.gxqnm.com
前端开发基于history.js的HTML5与HTML4浏览器兼容方案:单页应用无刷新历史状态管理技术实现-5Z6jeSqI1792158476
内容概要:本文系统介绍了如何利用history.js实现单页应用(SPA)在HTML5c与HTML4浏览器间s草错发的无缝历史状态管理。通过封装原生History API并在不支持的浏览器中自动降级为哈希路由,history.js解决了因浏览器兼容性导致的后退按钮失效、URL混乱等问题。文章详细讲解了其核心机制,包括状态对象管理、自动模式切换(HTML5 pushState vs HTML4 哈希)、状态数据持久化以及针,对Safari、IE等浏\览器的兼容性修复方案,并提供了从入门到实战的完整示例,涵盖初始化、事,件监听、页面加载及性能优化技巧。;5Z6jeSqI1792158476 sdhmgggw168.com www.shangliangwangye.com www.sdbing.net migu.blsxex.abxlbz.sc.cn www.safespeed.net.cn
高校如何通过科技报告服务提升技术转移转化效率?.docx
科易网基于40亿+科创知识图谱数据库,深度探索AI技术在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,研究科技创新领域的AI+数智化解决方案,推动科技创新与产业创新智能化发展。
科技服务机构如何提升服务大企业的技术诊断能力?.docx
科技服务机构如何提升服务大企业的技术诊断能力?


