android上传图片然后在加载出来显示。
网上看了看,大部分用的是以流的方式post过去。
首先android端:(只贴出关键性代码)
以下是装载ImageView显示图片并且得到装载后的图片的路径picPath
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == Activity.RESULT_OK && requestCode == TO_SELECT_PHOTO) {
picPath = data.getStringExtra(SelectPicActivity.KEY_PHOTO_PATH);
File file = new File(picPath);
if (file != null && file.exists()) {
Options opts = new Options();
opts.inSampleSize = 4;
Bitmap bitmap = BitmapFactory.decodeFile(file.getAbsolutePath(), opts);
btn_add_camera.setImageBitmap(bitmap);
}
}
super.onActivityResult(requestCode, resultCode, data);
}
以下是返回的结果
case R.id.btn_add_camera://相机按钮
Intent intent = new Intent(AddCataLogActivity.this, SelectPicActivity.class);
startActivityForResult(intent, TO_SELECT_PHOTO);
break;
有以上两步之后就可以上传了
if(!picPath.equals("")){//post上传
String actionUrl = "http://192.168.1.155:8886/FruitProject/GreenServlet";
UpLoadImg.uploadImg(actionUrl, picPath);
}
以上的uploadImg会打包
最后一步就是servlet端接受了
//post传照片
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=UTF-8");
//先上传图片 之后再添加到数据库
SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHms");
String cp11111 = request.getSession().getServletContext().getRealPath("/") + "Img/";
ImgName = format.format(new Date()) + ".jpg";// 时间的格式(图片字段)
try {
DiskFileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
List<FileItem> list = upload.parseRequest(request);
System.out.println(list + " list " + list.size());
for (FileItem item : list) {
if (item.isFormField() == false) {
File f = new File(cp11111 + ImgName);
item.write(f);
System.out.println("write filt success");
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
如此的简单。。。。。
显示出来就更简单了,一句代码。
mApplication.mGalleryBitmap.display(holder.myimg, "http://192.168.1.155:8886/FruitProject/Img/" + Listcatalog.getImgpath());