`
icetea
  • 浏览: 8710 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

JAVA 利用http POST上传文件

    博客分类:
  • JAVA
阅读更多
import java.io.*;    
import java.net.*;    
public class upload {    
                  
private static byte[] readFile(String file)throws Exception    
{    
FileInputStream   fis   =   new   FileInputStream(file);      
  byte[]   b   =   new   byte[256];      
  int   l;      
  ByteArrayOutputStream   bos   =   new   ByteArrayOutputStream();      
  while((l=fis.read(b))   !=   -1){      
bos.write(b,0,l);      
  }      
  fis.close();      
  return   bos.toByteArray();    
}    
                  
public static void main(String[] args) throws Exception{    
URL url = new URL("http://ustor.cn/newupload/");    
      HttpURLConnection connection=(HttpURLConnection)url.openConnection();    
       //设置请求方式    
         connection.setRequestMethod("POST");    
          connection.setDoOutput(true);    
          //读取文件内容到byte[]    
       //File file=new File("d:\\s.txt");    
       //FileOutputStream fos=new FileOutputStream(file);    
                     
   /*    
   byte buff;    
   StringBuffer file_buff =new StringBuffer();    
   while((buff=fis.read())!=-1)    
   {    
file_buff.append(new String(buff));    
   }    
   */
                  
       //byte[] f="abcdefghijklmnopqrstuvwxyz".getBytes();    
       //byte[] f=readFile("d:\\s.txt");    
       byte[] f=new FileUtil().getFileByte("E:\\My Documents\\Desktop\\对象存储\\对象存储_国内专利分析.jpg");    
   System.out.println("字节数组的大小:"+f.length);    
   /*    
   for(int i=0;i<f.length;i++)    
   {    
System.out.print(f[i]);    
   }    
   */
       //fos.write(f);    
      // 分隔符    
       String BOUNDARY = "---------------------------265001916915724";    
       StringBuffer sb = new StringBuffer();    
                        
       //发送文件:    
       sb = sb.append("--");    
       sb = sb.append(BOUNDARY);    
       sb = sb.append("\r\n");    
       sb = sb.append("Content-Disposition: form-data; name=\"file\"; filename=\"对象存储_国内专利分析.jpg\"\r\n");    
       sb = sb.append("Content-Type: image/jpeg\r\n\r\n");    
       byte[] data = sb.toString().getBytes();    
       byte[] end_data = ("\r\n--" + BOUNDARY + "--\r\n").getBytes();    
//        设置HTTP头:    
       connection.setRequestProperty("Content-Type", "multipart/form-data;boundary="+ BOUNDARY);    
       connection.setRequestProperty("Content-Length", String.valueOf(data.length + f.length + end_data.length));    
//        输出:    
      OutputStream out=connection.getOutputStream();    
       out.write(data);    
       out.write(f);    
       out.write(end_data);    
       out.flush();    
//        读取服务器响应:    
BufferedReader in=new BufferedReader(new InputStreamReader(connection.getInputStream()));    
String line=null;    
while((line=in.readLine())!=null){    
   System.out.println(line);    
                  
}    
in.close();    
out.close();    
                  
}    
                  
}    
                  
class FileUtil {    
                  
public byte[] getFileByte(String fileName) throws FileNotFoundException {    
  FileInputStream fileInputStream = new FileInputStream(fileName);    
  return getFileByte(fileInputStream);    
}    
                  
public byte[] getFileByte(URL url) throws IOException {    
  if (url != null) {    
   return getFileByte(url.openStream());    
  } else {    
   return null;    
  }    
}    
                  
public byte[] getFileByte(InputStream in) {    
  ByteArrayOutputStream out = new ByteArrayOutputStream(4096);    
  try {    
   copy(in, out);    
  } catch (IOException e) {    
   e.printStackTrace();    
  }    
  return out.toByteArray();    
                  
}    
                  
private void copy(InputStream in, OutputStream out) throws IOException {    
                  
  try {    
   byte[] buffer = new byte[4096];    
   int nrOfBytes = -1;    
   while ((nrOfBytes = in.read(buffer)) != -1) {    
    out.write(buffer, 0, nrOfBytes);    
   }    
   out.flush();    
  } catch (IOException e) {    
                  
  }finally {    
   try {    
    if (in != null) {    
     in.close();    
    }    
   } catch (IOException ex) {    
   }    
   try {    
    if (out != null) {    
     out.close();    
    }    
   } catch (IOException ex) {    
   }    
  }    
                  
}    
                  
}

 可结合FireFox的插件:HttpFox和 Live HTTP header 来设置请求的头部

0
4
分享到:
评论

相关推荐

    Java利用HttpURLConnection发送post请求上传文件.docx

    Java利用HttpURLConnection发送post请求上传文件

    Apache Commons fileUpload实现文件上传

    //检查当前项目是普通表单项目还是上传文件。 if (item.isFormField()) {//如果是普通表单项目,显示表单内容。 String fieldName = item.getFieldName(); if (fieldName.equals("name")) //对应demo1.html中...

    Android项目源码通用工程维护监控录音拍照位置上传

    客户端上传功能都做好了服务端可以根据post的字段自己用php或者py写个接收文件就可以了。注册部分只是个样子,没有实现功能。可以使用默认手机号17000000000密码javaapk登录进行测试。如果想了解更多安卓上传下载...

    基于 httpserver 类实现的简易 http 服务器

    利用 Java 的 com.sun.net 包下的 http 类,实现的简易 http 服务器。全部代码已上传至 GitHub,链接在文末。 主要功能为: 1、只处理 GET 方式和 POST 方式的请求,其他的返回 501 Not Implemented 2、GET:1)...

    通用工具类

    1.国际化工具类 ...14.HTTP请求工具类,支持get,post请求,支持上传文件 15.操作系统工具类,可以获取和判断操作系统类型 16.反射工具类 17.Java序列化工具类,支持序列化反序列化,可以用于OSGI环境

    SmartUpload+JSP上传案例

    首先进入上传页面,form表单采用post请求,并含有二进制文件,entype设置二进制上传文件类型,通过提交common.jsp实现SmartUpload上传然后跳转到对应的页面利用EL表达式显示上传的图片。

    xheditor-1.1.14

    参数值:接收用户上传的服务器端程序URL,默认留空为禁用超链接上传功能,具体使用方法请参考demo8演示文件 注:可使用内置变量:{editorRoot},代表当前编辑器的根路径,例:{editorRoot}upload.php upLinkExt:...

    用HttpClient来模拟浏览器GET POST

    再有如通过HTTP来上传文件呢?不需要头疼,这些问题有了“它”就很容易解决了! <br>我们不可能列举所有可能的顽固,我们会针对几种最常见的问题进行处理。当然了,正如前面说到的,如果我们自己使用java.net....

    Java学习笔记-个人整理的

    {7.1}Java的文件系统管理}{103}{section.7.1} {7.2}回调模式与FileFilter}{104}{section.7.2} {7.3}\ttfamily RandomAccessFile}{106}{section.7.3} {7.4}基本类型数据序列化}{108}{section.7.4} {7.5}String的...

    Offline Explorer Pro v7.7.4640.zip

    提供支持,并提取从Java和VB脚本,Java类,层叠样式表(.CSS),Macromedia Flash的(.SFW),XML/ XSL/ DTD,目录(.TOC),MPEG3播放列表(.M3U链接),Authorware中(.AAM)时,Acrobat(。PDF),RealMedia格式...

    从J2SE到J2EE知识点介绍

    2. 利用Spring IoC方式 编写 263 3. 设置Bean作用域 265 4. 为Bean配置集合(List,Set,Map) 266 5. 调用构造方法创建Bean 271 6. 指定Bean引用与自动装配 276 (二) AOP 278 1. AOP简介 278 (三) Spring 3.X 新特性...

    Google Android SDK开发范例大全(完整版附部分源码).pdf

    8.11 将手机文件上传至网站服务器——模拟HTTPFORM的POSTACTION 8.12 移动博客发布器——以XML-RPC达成远程过程调用 8.13 移动RSS阅读器——利用SAXParser解析XML 8.14 远程下载安装Android程序——APKInstaller...

    Google Android SDK开发范例大全(PDF高清完整版3)(4-3)

    8.11 将手机文件上传至网站服务器——模拟HTTPFORM的POSTACTION 8.12 移动博客发布器——以XML-RPC达成远程过程调用 8.13 移动RSS阅读器——利用SAXParser解析XML 8.14 远程下载安装Android程序——APKInstaller的...

    Google Android SDK开发范例大全(PDF完整版4)(4-4)

    8.11 将手机文件上传至网站服务器——模拟HTTPFORM的POSTACTION 8.12 移动博客发布器——以XML-RPC达成远程过程调用 8.13 移动RSS阅读器——利用SAXParser解析XML 8.14 远程下载安装Android程序——APKInstaller的...

    Google Android SDK开发范例大全(PDF高清完整版1)(4-1)

    8.11 将手机文件上传至网站服务器——模拟HTTPFORM的POSTACTION 8.12 移动博客发布器——以XML-RPC达成远程过程调用 8.13 移动RSS阅读器——利用SAXParser解析XML 8.14 远程下载安装Android程序——APKInstaller的...

    Google Android SDK开发范例大全的目录

    8.11 将手机文件上传至网站服务器——模拟HTTPFORM的POSTACTION 8.12 移动博客发布器——以XML-RPC达成远程过程调用 8.13 移动RSS阅读器——利用SAXParser解析XML 8.14 远程下载安装Android程序——APKInstaller的...

    Google+Android+SDK开发范例大全

    8.11 将手机文件上传至网站服务器——模拟HTTPFORM的POSTACTION 8.12 移动博客发布器——以XML-RPC达成远程过程调用 8.13 移动RSS阅读器——利用SAXParser解析XML 8.14 远程下载安装Android程序——APKInstaller的...

    Google Android sdk 开发范例大全 部分章节代码

    8.11 将手机文件上传至网站服务器——模拟HTTPFORM的POSTACTION 8.12 移动博客发布器——以XML-RPC达成远程过程调用 8.13 移动RSS阅读器——利用SAXParser解析XML 8.14 远程下载安装Android程序——APKInstaller的...

Global site tag (gtag.js) - Google Analytics