Android客户端使用了AFinal框架,处理图片上传的代码如下:

package cn.yubo.testupload;import java.io.File;import net.tsz.afinal.FinalHttp;import net.tsz.afinal.http.AjaxCallBack;import net.tsz.afinal.http.AjaxParams;import org.json.JSONObject;import android.app.Activity;import android.os.Bundle;import android.text.TextUtils;import android.view.View;import android.widget.Toast;public class MainActivity extends Activity {private FinalHttp finalHttp;    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);                finalHttp = new FinalHttp();        finalHttp.configTimeout(10 * 1000);    }        private void showToast(String msg){    Toast.makeText(this, msg, Toast.LENGTH_SHORT).show();    }    //上传文件    public void upload(View view){    try {    //待上传的两个文件File file = new File("mnt/sdcard/Download/text.txt");File file2 = new File("mnt/sdcard/Download/4aa60.gif");//post请求需要携带的参数AjaxParams params = new AjaxParams();//将文件放入参数中params.put("file", file);params.put("file2", file2);//请求的URLString url = "http://10.8.10.138:8080/UploadFiles/UploadFileServlet";//post请求,三个参数分别是请求地址、请求参数、请求的回调接口finalHttp.post(url, params, new AjaxCallBack<String>() {@Overridepublic void onFailure(Throwable t, int errorNo, String strMsg) {super.onFailure(t, errorNo, strMsg);showToast("上传失败, msg=" + strMsg);}@Overridepublic void onStart() {super.onStart();showToast("开始上传");}@Overridepublic void onSuccess(String t) {super.onSuccess(t);//根据服务器返回的json数据,判断上传是否成功if(!TextUtils.isEmpty(t)){try {JSONObject obj = new JSONObject(t);if(obj.optInt("result") == 1){showToast("上传成功");}} catch (Exception e) {e.printStackTrace();}}}});} catch (Exception e) {e.printStackTrace();}    }}
上传的主要代码在upload方法中,下面是服务器端代码,接收文件用到了commons-fileupload-1.2.2.jar和commons-io-2.3.jar两个包,接收的代码如下:

package cn.yubo.servlets;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;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.disk.DiskFileItemFactory;import org.apache.commons.fileupload.servlet.ServletFileUpload;import org.json.JSONObject;public class UploadFileServlet extends HttpServlet {private static final long serialVersionUID = 1L;@SuppressWarnings("unchecked")public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {response.setContentType("text/html");PrintWriter out = response.getWriter();DiskFileItemFactory factory = new DiskFileItemFactory();String path = "C:\\";//上传文件的保存路径factory.setRepository(new File(path));factory.setSizeThreshold(1024 * 1024);ServletFileUpload upload = new ServletFileUpload(factory);JSONObject jobj = new JSONObject();try {List<FileItem> list = (List<FileItem>)upload.parseRequest(request);for(FileItem item : list){String name = item.getName();String fileName = name.substring(name.lastIndexOf("\\") + 1);InputStream is = item.getInputStream();File f = new File(path + fileName);FileOutputStream fos = new FileOutputStream(f);int hasRead = 0;byte[] buf = new byte[1024];while((hasRead = is.read(buf)) > 0){fos.write(buf, 0, hasRead);}fos.close();is.close();}jobj.put("result", 1);out.print(jobj.toString());} catch (Exception e1) {e1.printStackTrace();}out.flush();out.close();}}
源码下载点击这里


更多相关文章

  1. android中使用HTTP协议和TCP协议实现上传文件
  2. 查询通讯录拨号发短信
  3. android 使用Okhttp封装上传JSON格式数据的工具类
  4. android 使用Okhttp封装上传JSON格式数据的工具类
  5. Android(安卓)解决AIDL bindService异常
  6. Android(安卓)开发10个常用工具类
  7. Android通讯
  8. android在service中使用AsyncHttpClient加载网络资源
  9. android调用系统相机并调整照片大小保存,最后上传照片

随机推荐

  1. 0323作业-CSS盒模型、CSS相对定位和绝对
  2. 最小二乘法来源(翻译)
  3. 随机森林(R语言)
  4. 关联分析(4):购物篮数据转换R语言
  5. 一份人人都能看懂的 Authing 介绍
  6. 峰度与偏度(python)
  7. R语言包的安装
  8. 内存管理思想
  9. ESXI(VSphere)主机补丁离线升级(多图)
  10. 对接海康AI Cloud智能应用平台