您的位置:首页 > 运维架构 > Tomcat

关于Android客户端与Tomcat服务器的文件上传

2013-05-13 16:22 351 查看
首先是引包,Android客户端需加httpmime-4.1.2.jar

,Server端添加

这两个包,

下面直接上代码,

Android客户端文件的上传,用到网络传输,使用异步上传:

class Send2ServerTask extends AsyncTask<Void, Void, Void> {

@Override
protected void onPostExecute(Void result) {
String path=server_url+"files/test.jpg";
AsyncImageLoader2 loader=new AsyncImageLoader2();
loader.setOnCompleteListener(new CompleteCallback() {

@Override
public void onComplete(Bitmap drawable) {
img.setImageBitmap(drawable);
}
});
loader.load(MainActivity.this, path);
}

@Override
protected Void doInBackground(Void... params) {
try {

String url = new StringBuilder(server_url).append(
"upload").toString();
HttpClient httpClient = new DefaultHttpClient();
HttpPost post = new HttpPost(url);
MultipartEntity mEntity = new MultipartEntity();
String path="mnt/sdcard/Pictures/test.jpg";
if (path != null) {
mEntity.addPart("photo", new FileBody(new File(path)));
}
mEntity.addPart("text",
new StringBody("文件上传文本测试", Charset.forName("UTF-8")));
post.setEntity(mEntity);

HttpResponse response = httpClient.execute(post);
String serverResponse = EntityUtils.toString(response
.getEntity());
JSONObject obj = null;
Message msg = new Message();
msg.what = SHOW_TOAST;
if (serverResponse != null) {
obj = new JSONObject(serverResponse);
if (obj.getString("fail") != null
&& !obj.getString("fail").equals("")) {
msg.obj = obj.getString("fail");
} else if (obj.getString("success") != null
&& obj.getString("success").equals("SUCCESS")) {
msg.arg1 = 1;
msg.obj = "上传成功!";
}
mHandler.sendMessage(msg);
} else {
msg.obj = "上传失败!";
mHandler.sendMessage(msg);
}
} catch (Exception e) {
e.printStackTrace();
Message msg = new Message();
msg.what = SHOW_TOAST;
msg.obj = "上传失败!";
mHandler.sendMessage(msg);
}
return null;
}
}
Handler mHandler = new Handler() {
public void handleMessage(Message msg) {
switch (msg.what) {
case SHOW_TOAST:
Toast.makeText(MainActivity.this, msg.obj.toString(), Toast.LENGTH_SHORT).show();
break;
}
}
};


在Oncreate里调用:

findViewById(R.id.btn).setOnClickListener(new OnClickListener() {

@Override
public void onClick(View arg0) {
Send2ServerTask task=new Send2ServerTask();
task.execute();
}
});


服务器端代码:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
boolean isHaveData=ServletFileUpload.isMultipartContent(request);
JSONObject obj=new JSONObject();
PrintWriter out=response.getWriter();
if (isHaveData) {
FileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
try {
List items = upload.parseRequest(request);
Iterator iter = items.iterator();
while (iter.hasNext()) {
FileItem item = (FileItem) iter.next();
if (item.isFormField()) {
// 普通文本信息处理
String paramName = item.getFieldName();
if("text".equals(paramName)){
System.out.println("text:"+item.getString());
}
} else {
// 上传文件信息处理
String fileName = item.getName();
byte[] data = item.get();
String filePath =null;
File file = new File(getServletContext().getRealPath("/files"));
if (!file.exists())
file.mkdirs();
filePath = file.getPath() + "/" + fileName;
FileOutputStream fos = new FileOutputStream(filePath);
fos.write(data);
fos.close();
}
}
//obj=JSONObject.fromObject((Object)"上传成功!");
} catch (FileUploadException e) {
e.printStackTrace();
//obj=JSONObject.fromObject((Object)"上传失败!");
}
}
//out.println(obj.toString());
out.flush();
out.close();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐