真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

怎么在JAVA中利用HttpURLConnection實(shí)現(xiàn)一個(gè)文件上傳下載功能

怎么在JAVA中利用HttpURLConnection實(shí)現(xiàn)一個(gè)文件上傳下載功能?很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。

創(chuàng)新互聯(lián)公司專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都網(wǎng)站制作、網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè)、翔安網(wǎng)絡(luò)推廣、成都小程序開發(fā)、翔安網(wǎng)絡(luò)營(yíng)銷、翔安企業(yè)策劃、翔安品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營(yíng)等,從售前售中售后,我們都將竭誠(chéng)為您服務(wù),您的肯定,是我們最大的嘉獎(jiǎng);創(chuàng)新互聯(lián)公司為所有大學(xué)生創(chuàng)業(yè)者提供翔安建站搭建服務(wù),24小時(shí)服務(wù)熱線:13518219792,官方網(wǎng)址:www.cdcxhl.com

HttpURLConnection文件上傳

HttpURLConnection采用模擬瀏覽器上傳的數(shù)據(jù)格式,上傳給服務(wù)器

上傳代碼如下:

package com.util;

import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.util.Iterator;
import java.util.Map;

/**
 * Java原生的API可用于發(fā)送HTTP請(qǐng)求,即java.net.URL、java.net.URLConnection,這些API很好用、很常用,
 * 但不夠簡(jiǎn)便;
 * 
 * 1.通過統(tǒng)一資源定位器(java.net.URL)獲取連接器(java.net.URLConnection) 2.設(shè)置請(qǐng)求的參數(shù) 3.發(fā)送請(qǐng)求
 * 4.以輸入流的形式獲取返回內(nèi)容 5.關(guān)閉輸入流
 * 
 * @author H__D
 *
 */
public class HttpConnectionUtil {


 /**
  * 多文件上傳的方法
  * 
  * @param actionUrl:上傳的路徑
  * @param uploadFilePaths:需要上傳的文件路徑,數(shù)組
  * @return
  */
 @SuppressWarnings("finally")
 public static String uploadFile(String actionUrl, String[] uploadFilePaths) {
  String end = "\r\n";
  String twoHyphens = "--";
  String boundary = "*****";

  DataOutputStream ds = null;
  InputStream inputStream = null;
  InputStreamReader inputStreamReader = null;
  BufferedReader reader = null;
  StringBuffer resultBuffer = new StringBuffer();
  String tempLine = null;

  try {
   // 統(tǒng)一資源
   URL url = new URL(actionUrl);
   // 連接類的父類,抽象類
   URLConnection urlConnection = url.openConnection();
   // http的連接類
   HttpURLConnection httpURLConnection = (HttpURLConnection) urlConnection;

   // 設(shè)置是否從httpUrlConnection讀入,默認(rèn)情況下是true;
   httpURLConnection.setDoInput(true);
   // 設(shè)置是否向httpUrlConnection輸出
   httpURLConnection.setDoOutput(true);
   // Post 請(qǐng)求不能使用緩存
   httpURLConnection.setUseCaches(false);
   // 設(shè)定請(qǐng)求的方法,默認(rèn)是GET
   httpURLConnection.setRequestMethod("POST");
   // 設(shè)置字符編碼連接參數(shù)
   httpURLConnection.setRequestProperty("Connection", "Keep-Alive");
   // 設(shè)置字符編碼
   httpURLConnection.setRequestProperty("Charset", "UTF-8");
   // 設(shè)置請(qǐng)求內(nèi)容類型
   httpURLConnection.setRequestProperty("Content-Type", "multipart/form-data;boundary=" + boundary);

   // 設(shè)置DataOutputStream
   ds = new DataOutputStream(httpURLConnection.getOutputStream());
   for (int i = 0; i < uploadFilePaths.length; i++) {
    String uploadFile = uploadFilePaths[i];
    String filename = uploadFile.substring(uploadFile.lastIndexOf("http://") + 1);
    ds.writeBytes(twoHyphens + boundary + end);
    ds.writeBytes("Content-Disposition: form-data; " + "name=\"file" + i + "\";filename=\"" + filename
      + "\"" + end);
    ds.writeBytes(end);
    FileInputStream fStream = new FileInputStream(uploadFile);
    int bufferSize = 1024;
    byte[] buffer = new byte[bufferSize];
    int length = -1;
    while ((length = fStream.read(buffer)) != -1) {
     ds.write(buffer, 0, length);
    }
    ds.writeBytes(end);
    /* close streams */
    fStream.close();
   }
   ds.writeBytes(twoHyphens + boundary + twoHyphens + end);
   /* close streams */
   ds.flush();
   if (httpURLConnection.getResponseCode() >= 300) {
    throw new Exception(
      "HTTP Request is not success, Response code is " + httpURLConnection.getResponseCode());
   }

   if (httpURLConnection.getResponseCode() == HttpURLConnection.HTTP_OK) {
    inputStream = httpURLConnection.getInputStream();
    inputStreamReader = new InputStreamReader(inputStream);
    reader = new BufferedReader(inputStreamReader);
    tempLine = null;
    resultBuffer = new StringBuffer();
    while ((tempLine = reader.readLine()) != null) {
     resultBuffer.append(tempLine);
     resultBuffer.append("\n");
    }
   }

  } catch (Exception e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } finally {
   if (ds != null) {
    try {
     ds.close();
    } catch (IOException e) {
     // TODO Auto-generated catch block
     e.printStackTrace();
    }
   }
   if (reader != null) {
    try {
     reader.close();
    } catch (IOException e) {
     // TODO Auto-generated catch block
     e.printStackTrace();
    }
   }
   if (inputStreamReader != null) {
    try {
     inputStreamReader.close();
    } catch (IOException e) {
     // TODO Auto-generated catch block
     e.printStackTrace();
    }
   }
   if (inputStream != null) {
    try {
     inputStream.close();
    } catch (IOException e) {
     // TODO Auto-generated catch block
     e.printStackTrace();
    }
   }

   return resultBuffer.toString();
  }
 }


 public static void main(String[] args) {

  // 上傳文件測(cè)試
   String str = uploadFile("http://127.0.0.1:8080/image/image.do",new String[] { "/Users//H__D/Desktop//1.png","http://Users/H__D/Desktop/2.png" });
   System.out.println(str);


 }

}

HttpURLConnection文件下載

下載代碼如下:

package com.util;

import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.util.Iterator;
import java.util.Map;

/**
 * Java原生的API可用于發(fā)送HTTP請(qǐng)求,即java.net.URL、java.net.URLConnection,這些API很好用、很常用,
 * 但不夠簡(jiǎn)便;
 * 
 * 1.通過統(tǒng)一資源定位器(java.net.URL)獲取連接器(java.net.URLConnection) 2.設(shè)置請(qǐng)求的參數(shù) 3.發(fā)送請(qǐng)求
 * 4.以輸入流的形式獲取返回內(nèi)容 5.關(guān)閉輸入流
 * 
 * @author H__D
 *
 */
public class HttpConnectionUtil {


 /**
  * 
  * @param urlPath
  *   下載路徑
  * @param downloadDir
  *   下載存放目錄
  * @return 返回下載文件
  */
 public static File downloadFile(String urlPath, String downloadDir) {
  File file = null;
  try {
   // 統(tǒng)一資源
   URL url = new URL(urlPath);
   // 連接類的父類,抽象類
   URLConnection urlConnection = url.openConnection();
   // http的連接類
   HttpURLConnection httpURLConnection = (HttpURLConnection) urlConnection;
   // 設(shè)定請(qǐng)求的方法,默認(rèn)是GET
   httpURLConnection.setRequestMethod("POST");
   // 設(shè)置字符編碼
   httpURLConnection.setRequestProperty("Charset", "UTF-8");
   // 打開到此 URL 引用的資源的通信鏈接(如果尚未建立這樣的連接)。
   httpURLConnection.connect();

   // 文件大小
   int fileLength = httpURLConnection.getContentLength();

   // 文件名
   String filePathUrl = httpURLConnection.getURL().getFile();
   String fileFullName = filePathUrl.substring(filePathUrl.lastIndexOf(File.separatorChar) + 1);

   System.out.println("file length---->" + fileLength);

   URLConnection con = url.openConnection();

   BufferedInputStream bin = new BufferedInputStream(httpURLConnection.getInputStream());

   String path = downloadDir + File.separatorChar + fileFullName;
   file = new File(path);
   if (!file.getParentFile().exists()) {
    file.getParentFile().mkdirs();
   }
   OutputStream out = new FileOutputStream(file);
   int size = 0;
   int len = 0;
   byte[] buf = new byte[1024];
   while ((size = bin.read(buf)) != -1) {
    len += size;
    out.write(buf, 0, size);
    // 打印下載百分比
    // System.out.println("下載了-------> " + len * 100 / fileLength +
    // "%\n");
   }
   bin.close();
   out.close();
  } catch (MalformedURLException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } finally {
   return file;
  }

 }

 public static void main(String[] args) {

  // 下載文件測(cè)試
  downloadFile("http://localhost:8080/images/1467523487190.png", "/Users/H__D/Desktop");

 }

}

看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對(duì)創(chuàng)新互聯(lián)的支持。


網(wǎng)頁名稱:怎么在JAVA中利用HttpURLConnection實(shí)現(xiàn)一個(gè)文件上傳下載功能
文章出自:http://weahome.cn/article/jhoeij.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部