zoukankan      html  css  js  c++  java
  • 超大文件上传到服务器,实现流式传输,不再出现java.lang.OutOfMemoryError: Java heap space

     

    特别注意: HttpURLConnection要使用sun.net.www.protocol.http.HttpURLConnection

    参考地址:http://ferreousbox.javaeye.com/blog/157728 

     代码如下:

     1 FileInputStream fis =new FileInputStream(new File("本地文件地址"));
     2         URL dataUrl = new URL("上传url");
     3         HttpURLConnection con = (HttpURLConnection) dataUrl.openConnection();
     4         con.setRequestMethod("POST");
     5         con.setRequestProperty("Proxy-Connection""Keep-Alive");
     6         con.setDoOutput(true);
     7         con.setDoInput(true);
     8         con.setChunkedStreamingMode(1024);
     9         OutputStream os=con.getOutputStream();
    10         int rn2;  
    11         byte[] buf2 = new byte[1024];  
    12         while((rn2=fis.read(buf2, 01024))>0)  
    13         {     
    14             os.write(buf2,0,rn2);    
    15             System.out.println("上传了1024...");
    16         }  
    17         os.flush();  
    18         os.close();  
    19         fis.close();  
    20         
    21         InputStream is=con.getInputStream();
    22         DataInputStream dis=new DataInputStream(is);
    23         byte d[]=new byte[dis.available()];
    24         dis.read(d);
    25         String data=new String(d);
    26         con.disconnect();
    27         System.out.println(data);

     取返回值用下在这种方法会更好一点,上面的发现常出现取不到返回值的情况

    代码
     BufferedReader inss = new BufferedReader(new InputStreamReader(con.getInputStream()));  
            String line 
    = null;  
            StringBuffer content
    = new StringBuffer();  
           
    while((line = inss.readLine()) != null){//line为返回值,这就可以判断是否成功、  
               content.append(line);  
           }  
           inss.close() ;  
           inss
    =null;  
           dataUrl 
    = null;
           String data 
    =content.toString();
  • 相关阅读:
    ulimit
    python3.7安装Scrapy
    用VS2013写第一个汇编语言程序
    螺旋矩阵问题
    Java Web Pro与apache tomcat初始化关联
    记一次m3u8多个视频文件合并为整体法四(未加密)
    记一次m3u8多个视频文件合并为整体法三(未加密)
    记一次m3u8多个视频文件合并为整体法二(未加密)
    记将m3u8多个视频文件合并为整体法一(未加密)
    c++给定字符分割
  • 原文地址:https://www.cnblogs.com/cerxp/p/1721973.html
Copyright © 2011-2022 走看看