• 超大文件上传到服务器,实现流式传输,不再出现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();
  • 相关阅读:
    Linux基础命令mv
    Linux基础命令cp
    闭包函数
    函数的嵌套
    函数对象
    global与nonlocal
    名称空间与作用域
    函数的参数(总结)
    函数的基本使用
    文件的操作之指针移动
  • 原文地址:https://www.cnblogs.com/cerxp/p/1721973.html
Copyright © 2020-2023  润新知