日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java http 下载文件_JAVA通过HttpURLConnection 上传和下载文件的方法

發布時間:2025/3/11 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java http 下载文件_JAVA通过HttpURLConnection 上传和下载文件的方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文介紹了JAVA通過HttpURLConnection 上傳和下載文件的方法,分享給大家,具體如下:

HttpURLConnection文件上傳

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可用于發送HTTP請求,即java.net.URL、java.net.URLConnection,這些API很好用、很常用,

* 但不夠簡便;

*

* 1.通過統一資源定位器(java.net.URL)獲取連接器(java.net.URLConnection) 2.設置請求的參數 3.發送請求

* 4.以輸入流的形式獲取返回內容 5.關閉輸入流

*

* @author H__D

*

*/

public class HttpConnectionUtil {

/**

* 多文件上傳的方法

*

* @param actionUrl:上傳的路徑

* @param uploadFilePaths:需要上傳的文件路徑,數組

* @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 {

// 統一資源

URL url = new URL(actionUrl);

// 連接類的父類,抽象類

URLConnection urlConnection = url.openConnection();

// http的連接類

HttpURLConnection httpURLConnection = (HttpURLConnection) urlConnection;

// 設置是否從httpUrlConnection讀入,默認情況下是true;

httpURLConnection.setDoInput(true);

// 設置是否向httpUrlConnection輸出

httpURLConnection.setDoOutput(true);

// Post 請求不能使用緩存

httpURLConnection.setUseCaches(false);

// 設定請求的方法,默認是GET

httpURLConnection.setRequestMethod("POST");

// 設置字符編碼連接參數

httpURLConnection.setRequestProperty("Connection", "Keep-Alive");

// 設置字符編碼

httpURLConnection.setRequestProperty("Charset", "UTF-8");

// 設置請求內容類型

httpURLConnection.setRequestProperty("Content-Type", "multipart/form-data;boundary=" + boundary);

// 設置DataOutputStream

ds = new DataOutputStream(httpURLConnection.getOutputStream());

for (int i = 0; i < uploadFilePaths.length; i++) {

String uploadFile = uploadFilePaths[i];

String filename = uploadFile.substring(uploadFile.lastIndexOf("//") + 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) {

// 上傳文件測試

String str = uploadFile("http://127.0.0.1:8080/image/image.do",new String[] { "/Users//H__D/Desktop//1.png","//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可用于發送HTTP請求,即java.net.URL、java.net.URLConnection,這些API很好用、很常用,

* 但不夠簡便;

*

* 1.通過統一資源定位器(java.net.URL)獲取連接器(java.net.URLConnection) 2.設置請求的參數 3.發送請求

* 4.以輸入流的形式獲取返回內容 5.關閉輸入流

*

* @author H__D

*

*/

public class HttpConnectionUtil {

/**

*

* @param urlPath

* 下載路徑

* @param downloadDir

* 下載存放目錄

* @return 返回下載文件

*/

public static File downloadFile(String urlPath, String downloadDir) {

File file = null;

try {

// 統一資源

URL url = new URL(urlPath);

// 連接類的父類,抽象類

URLConnection urlConnection = url.openConnection();

// http的連接類

HttpURLConnection httpURLConnection = (HttpURLConnection) urlConnection;

// 設定請求的方法,默認是GET

httpURLConnection.setRequestMethod("POST");

// 設置字符編碼

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) {

// 下載文件測試

downloadFile("http://localhost:8080/images/1467523487190.png", "/Users/H__D/Desktop");

}

}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

總結

以上是生活随笔為你收集整理的java http 下载文件_JAVA通过HttpURLConnection 上传和下载文件的方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。