android手机客户端上传文件,java servlet服务器端接收并保存到服务器
16lz
2021-12-04
内容如题,不多说,直接上代码。
android客户端代码:
服务器端代码:
客户端和服务器端代码下载地址:
http://download.csdn.net/detail/qq15989177612/6900727
android客户端代码:
public class MainActivity extends Activity{private TextView uploadInfo;@Overrideprotected void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);uploadInfo = (TextView) findViewById(R.id.upload_info);uploadFile();}public void uploadFile(){//服务器端地址String url = "http://192.168.0.108:8080/UploadFileServer/upload";//手机端要上传的文件,首先要保存你手机上存在该文件String filePath = Environment.getExternalStorageDirectory()+ "/1/power.apk";AsyncHttpClient httpClient = new AsyncHttpClient();RequestParams param = new RequestParams();try{param.put("file", new File(filePath));param.put("content", "liucanwen");httpClient.post(url, param, new AsyncHttpResponseHandler(){@Overridepublic void onStart(){super.onStart();uploadInfo.setText("正在上传...");}@Overridepublic void onSuccess(String arg0){super.onSuccess(arg0);Log.i("ck", "success>" + arg0);if(arg0.equals("success")){Toast.makeText(MainActivity.this, "上传成功!", 1000).show();}uploadInfo.setText(arg0);}@Overridepublic void onFailure(Throwable arg0, String arg1){super.onFailure(arg0, arg1);uploadInfo.setText("上传失败!");}});} catch (FileNotFoundException e){e.printStackTrace();Toast.makeText(MainActivity.this, "上传文件不存在!", 1000).show();}}}
服务器端代码:
public class UploadFileServlet extends HttpServlet{public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException{response.setContentType("text/html");PrintWriter out = response.getWriter();// 创建文件项目工厂对象DiskFileItemFactory factory = new DiskFileItemFactory();// 设置文件上传路径String upload = this.getServletContext().getRealPath("/upload/");// 获取系统默认的临时文件保存路径,该路径为Tomcat根目录下的temp文件夹String temp = System.getProperty("java.io.tmpdir");// 设置缓冲区大小为 5Mfactory.setSizeThreshold(1024 * 1024 * 5);// 设置临时文件夹为tempfactory.setRepository(new File(temp));// 用工厂实例化上传组件,ServletFileUpload 用来解析文件上传请求ServletFileUpload servletFileUpload = new ServletFileUpload(factory);// 解析结果放在List中try{List<FileItem> list = servletFileUpload.parseRequest(request);for (FileItem item : list){String name = item.getFieldName();InputStream is = item.getInputStream();if (name.contains("content")){System.out.println(inputStream2String(is));} else if(name.contains("file")){try{inputStream2File(is, upload + "\\" + item.getName());} catch (Exception e){e.printStackTrace();}}}out.write("success");} catch (FileUploadException e){e.printStackTrace();out.write("failure");}out.flush();out.close();}// 流转化成字符串public static String inputStream2String(InputStream is) throws IOException{ByteArrayOutputStream baos = new ByteArrayOutputStream();int i = -1;while ((i = is.read()) != -1){baos.write(i);}return baos.toString();}// 流转化成文件public static void inputStream2File(InputStream is, String savePath)throws Exception{System.out.println("文件保存路径为:" + savePath);File file = new File(savePath);InputStream inputSteam = is;BufferedInputStream fis = new BufferedInputStream(inputSteam);FileOutputStream fos = new FileOutputStream(file);int f;while ((f = fis.read()) != -1){fos.write(f);}fos.flush();fos.close();fis.close();inputSteam.close();}}
客户端和服务器端代码下载地址:
http://download.csdn.net/detail/qq15989177612/6900727
更多相关文章
- Pycharm安装PyQt5的详细教程
- [android源码下载索引贴】微信+二维码那都不是事......
- 【Android】使用LiveData KTX Builder让代码更简洁
- 一个简单的iPhone项目及代码
- android布局文件中的include
- Android(安卓)获取存储卡路径和空间使用情况
- 打android的patch
- TabHost两种实现方式
- Android(安卓)单元测试小总结