文件上传
来源:互联网 发布:网络文明绘画图片大全 编辑:程序博客网 时间:2024/06/06 01:09
最近写项目有一个图片上传的功能,现在项目已经结束啦,我就想着把这个东东贴出来和大家分享一下,希望对大家有所帮助,其实很简单的,大家一看应该就明白了,有什么不明白的,请留言啊
上传图片也就是一个方法就搞定啦,那就开始上关键代码吧:
public static String uploadFile(File file, String uploadUrl) { String result = null; String BOUNDARY = UUID.randomUUID().toString(); // 边界标识 随机生成 String LINE_END = "\r\n";//换行,相当于回车 String CONTENT_TYPE = "multipart/form-data"; // 内容类型 try { //根据url获取URL对象 URL url = new URL(uploadUrl); //由URL对象获取HttpURLConnection对象,链接到指定的网络地址 HttpURLConnection conn = (HttpURLConnection) url.openConnection(); //设置超时 conn.setReadTimeout(TIME_OUT); conn.setConnectTimeout(TIME_OUT); // 允许输入流 conn.setDoInput(true); // 允许输出流 conn.setDoOutput(true); // 不允许使用缓存 conn.setUseCaches(false); // 请求方式 conn.setRequestMethod("POST"); // 设置编码 conn.setRequestProperty("Charset", CHARSET); conn.setRequestProperty("connection", "keep-alive"); conn.setRequestProperty("Content-Type", CONTENT_TYPE + ";boundary=" + BOUNDARY); /** * 当文件不为空,把文件包装并且上传 */ if (file != null) { //根据链接网络地址的HttpURLConnection对象获取输出流 DataOutputStream dos = new DataOutputStream(conn.getOutputStream()); //上传文件的头部// StringBuffer sb = new StringBuffer();// sb.append(PREFIX);// sb.append(BOUNDARY);// sb.append(LINE_END);// /**// * 这里重点注意: name里面的值为服务端需要key 只有这个key 才可以得到对应的文件// * filename是文件的名字,包含后缀名的 比如:abc.png// */////// sb.append("Content-Disposition: form-data; name=\"uploadfile\"; filename=\""// + file.getName() + "\"" + LINE_END);// sb.append("Content-Type: application/octet-stream; charset=" + CHARSET + LINE_END);// sb.append(LINE_END);// dos.write(sb.toString().getBytes()); //创建InputStream对象 InputStream is = new FileInputStream(file); //缓存数组 byte[] bytes = new byte[1024]; int len = 0; while ((len = is.read(bytes)) != -1) { dos.write(bytes, 0, len); } is.close(); //换行 dos.write(LINE_END.getBytes()); dos.flush(); /** * 获取响应码 200=成功 当响应成功,获取响应的流 */ int res = conn.getResponseCode(); // if(res==200) // { InputStream input = conn.getInputStream(); StringBuffer sb1 = new StringBuffer(); int ss; while ((ss = input.read()) != -1) { sb1.append((char) ss); } //服务器返回的数据 result = sb1.toString(); // } // else{ // Log.e(TAG, "request error"); // } } } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return result; }
注释已经写得很详细啦,其他我就不多说啦!
0 0
- 文件上传---文件上传
- 上传文件
- 文件上传
- 上传文件
- 文件上传
- 文件上传
- 上传文件
- 上传文件
- 文件上传
- 文件上传
- 文件上传
- 文件上传
- 文件上传
- 文件上传
- 文件上传
- 上传文件
- 文件上传
- 文件上传
- Android程序ant打包
- 研读代码必须掌握的五个Eclipse快捷键
- [Leetcode] Path Sum
- DVB and EPG
- 部署新应用shell
- 文件上传
- tiny 4412---启动相关的大体分析
- android之SurfaceView,SurfaceHolder,SurfaceHolder.CallBack.
- 黑马程序员——从零开始学java程序(第四天)
- xml读取异常Invalid byte 1 of 1-byte UTF-8 sequence
- 移动web前端开发
- javaweb之Filter详解
- java并发编程-Executor框架
- linux du命令详解