上传文件实现方法

public static String formUpload(String urlStr, Map<String, String> textMap, Map<String, String> fileMap, String uri) {   String res = "";   HttpURLConnection conn = null;   String BOUNDARY = "---------------------------123821742118716"; // boundary就是request头和上传文件内容的分隔符   try {      URL url = new URL(urlStr);      conn = (HttpURLConnection) url.openConnection();      conn.setConnectTimeout(5000);      conn.setReadTimeout(30000);      conn.setDoOutput(true);      conn.setDoInput(true);      conn.setUseCaches(false);      conn.setRequestMethod("POST");      conn.setRequestProperty("Connection", "Keep-Alive");      conn.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows; U; Windows NT 6.1; zh-CN; rv:1.9.2.6)");      conn.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + BOUNDARY);

OutputStream out = new DataOutputStream(conn.getOutputStream());      // text      if (textMap != null) {         StringBuilder strBuilder = new StringBuilder();         for (Object o : textMap.entrySet()) {            Map.Entry entry = (Map.Entry) o;            String inputName = (String) entry.getKey();            String inputValue = (String) entry.getValue();            if (inputValue == null) {               continue;            }            strBuilder.append("\r\n").append("--").append(BOUNDARY).append("\r\n");            strBuilder.append("Content-Disposition: form-data; name=\"").append(inputName).append("\"\r\n\r\n");            strBuilder.append(inputValue);         }         out.write(strBuilder.toString().getBytes());      }

// file      if (fileMap != null) {         for (Object o : fileMap.entrySet()) {            Map.Entry entry = (Map.Entry) o;            String inputName = (String) entry.getKey();            String inputValue = (String) entry.getValue();            if (inputValue == null) {               continue;            }

InputStream inputStream = new URL(uri).openStream();            File file = new File(inputValue);            String filename = file.getName();            String contentType = new MimetypesFileTypeMap().getContentType(file);            if (filename.endsWith(".png")) {               contentType = "image/png";            }            if (contentType == null || contentType.equals("")) {               contentType = "application/octet-stream";            }

StringBuilder strBuilder = new StringBuilder();            strBuilder.append("\r\n").append("--").append(BOUNDARY).append("\r\n");            strBuilder.append("Content-Disposition: form-data; name=\"").append(inputName).append("\"; filename=\"").append(filename).append("\"\r\n");            strBuilder.append("Content-Type:").append(contentType).append("\r\n\r\n");

out.write(strBuilder.toString().getBytes());

DataInputStream in = new DataInputStream(inputStream);            int bytes;            byte[] bufferOut = new byte[1024];            while ((bytes = in.read(bufferOut)) != -1) {               out.write(bufferOut, 0, bytes);            }            in.close();         }      }

byte[] endData = ("\r\n--" + BOUNDARY + "--\r\n").getBytes();      out.write(endData);      out.flush();      out.close();

// 读取返回数据      StringBuilder strBuilder = new StringBuilder();      BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));      String line;      while ((line = reader.readLine()) != null) {         strBuilder.append(line).append("\n");      }      res = strBuilder.toString();      reader.close();   } catch (Exception e) {      System.out.println("发送POST请求出错。" + urlStr);      e.printStackTrace();   } finally {      if (conn != null) {         conn.disconnect();      }   }   return res;}
时间: 2024-10-23 03:27:12

上传文件实现方法的相关文章

asp.net中fileupload上传文件的方法

FileUpload 控件显示一个文本框控件和一个浏览按钮,使用户可以选择客户端上的文件并将它上载到 Web 服务器.用户通过在控件的文本框中输入本地计算机上文件的完整路径(例如,C:\MyFiles\test.txt)来指定要上载的文件.用户也可以通过单击“浏览”按钮,然后在“选择文件”对话框中定位文件来选择文件. 用户选择要上载的文件后,FileUpload 控件不会自动将该文件保存到服务器.您必须显式提供一个控件或机制,使用户能提交指定的文件.例如,可以提供一个按钮,用户单击它即可上载文件

IE input file隐藏不能上传文件解决方法

当大神们都在探讨更深层次的问题时,我还在这里转载发些肤浅的问题解决方案.罢了,为了和我一样笨的后来人. 问题: 上传文件时,用<input type="file" />标签,但是默认的file标签很难看,而且每个浏览器下都有很大差距. 1.一般解决办法: 我们基本都把真正的file标签给隐藏,然后创建一个标签来替代它,比如我们创建一个a标签来替代它,隐藏file标签,单击a标签时触发file标签click弹出选择文件窗口,选择文件之后,触发file的change事件提交.

朋友封装的一个ASP.NET上传文件的方法

自我感觉封装得还不错!!! 代码如下: C#代码   #region 上传文件的方法 /// <summary> /// 上传文件方法 /// </summary> /// <param name="myFileUpload">上传控件ID</param> /// <param name="allowExtensions">允许上传的扩展文件名类型,如:string[] allowExtensions = 

朋友封装的一个ASP.NET上传文件的方法(转)

#region 上传文件的方法 /// <summary> /// 上传文件方法 /// </summary> /// <param name="myFileUpload">上传控件ID</param> /// <param name="allowExtensions">允许上传的扩展文件名类型,如:string[] allowExtensions = { ".doc", ".

springMVC 获取本地项目路径 以及上传文件的方法整理

String path=request.getSession().getServletContext().getRealPath("upload/img/product"); //二进制上传 MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; //获取文件 CommonsMultipartFile fpic=(CommonsMultipartFile) multipa

几个关于上传文件的方法和属性

在进行进一步的代码解释之前,需要先讲几个关于上传文件的方法和属性: myFile.read():从文件中读取整个上传的数据,这个方法只适合小文件: myFile.chunks():按块返回文件,通过在for循环中进行迭代,可以将大文件按块写入到服务器中: myFile.multiple_chunks():这个方法根据myFile的大小,返回True或者False,当myFile文件大于2.5M(默认为2.5M,可以调整)时,该方法返回True,否则返回False,因此可以根据该方法来选择选用re

使用jquery插件uploadify上传文件的方法与疑问

我是学生一枚,专业也不是计算机,但又要用到很多相关技术,所以在技术基础不牢靠的情况下,硬着头皮在做.最近在做一个小项目需要上传图片,而且是需要用ajax的方式.但是利用jquery的ajax方法总会有“C:/fakepath”的问题,在网上找了很久相关解决方法,但是都太过麻烦,或者说我的水平还不到.但也看到有的人说可以用jquery的文件上传插件,于是百度.发现http://www.oschina.net/news/20298/20-excellent-jquery-file-upload-pl

简单介绍使用GooUploader.js实现批量上传文件的方法(使用struts2)

最近的网站项目中需要实现上传pdf的功能,期间找了很多jquery的插件,都不能满足要求,最后找到GooUploader.js,由于自己是第一次接触上传文件的功能,虽然看了很多写地详细的博客,还是花了很长时间才应用到项目中,所以在这里自己总结一下. GooUploader.js插件是在swfupload.js基础上进行扩展的,有些比较好的特点: 1. 支持批量文件上传: 2. 上传文件时,选择文件后,可以选择单个文件上传,也可以选择批量文件上传: 3. 开始上传文件后,可以取消单个文件上传,也可

前端上传文件的方法总结

最近做了阿里云的oss上传,顺便来总结下上传文件的几种主要方法. 第一种:经典的form和input上传. 设置form的aciton为后端页面,enctype="multipart/form-data",type='post' <form action='uploadFile.php' enctype="multipart/form-data" type='post'> <input type='file'> <input type=

Laravel操作上传文件的方法

1.获取上传的文件 $file=$request->file('file');2.获取上传文件的文件名(带后缀,如abc.png) $filename=$file->getClientOriginalName();3.获取上传文件的后缀(如abc.png,获取到的为png) $fileextension=$file->getClientOriginalExtension();4.获取上传文件的大小 $filesize=$file->getClientSize();5.获取缓存在tm