java大文件下载,工具类DiskFileItem
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;
import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManager;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItem;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.commons.CommonsMultipartFile;
import com.webber.cm.util.X509TrustUtil;
public class Test {
public String uploadSource(String path,String fileName,String tempFilePath){
InputStream is = null;
OutputStream os = null;
String mimeType;
try {
if (path.startsWith("https://")) {
SSLContext sslcontext = SSLContext.getInstance("SSL", "SunJSSE");
sslcontext.init(null, new TrustManager[] {new X509TrustUtil()}, new java.security.SecureRandom());
URL url= new URL(null, path, new sun.net.www.protocol.https.Handler());
HostnameVerifier ignoreHostnameVerifier = (s, sslSession) -> true;
HttpsURLConnection.setDefaultHostnameVerifier(ignoreHostnameVerifier);
HttpsURLConnection.setDefaultSSLSocketFactory(sslcontext.getSocketFactory());
HttpsURLConnection urlCon = (HttpsURLConnection)url.openConnection();
urlCon.setHostnameVerifier(ignoreHostnameVerifier);
urlCon.setSSLSocketFactory(sslcontext.getSocketFactory());
urlCon.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");
urlCon.setConnectTimeout(60000);
urlCon.setReadTimeout(60000);
urlCon.setDoOutput(true);
urlCon.setDoInput(true);
urlCon.setUseCaches(false);
// 设置请求方式(GET/POST)
urlCon.setRequestMethod("GET");
System.out.println(urlCon.getResponseMessage());
int code = urlCon.getResponseCode();
if (code != HttpURLConnection.HTTP_OK) {
throw new Exception("文件读取失败");
}
is = urlCon.getInputStream();
mimeType = urlCon.getContentType();
} else {
URL url = new URL(path);
URLConnection connection = url.openConnection();
is = connection.getInputStream();
// "image/jpeg"
mimeType = connection.getContentType();
}
FileItem fileItem = new DiskFileItem("file", mimeType, true,
fileName, 1024 * 1024 * 3, new File(tempFilePath));
os = fileItem.getOutputStream();
byte[] buffer = new byte[1024];
int len;
while ((len = is.read(buffer)) > -1) {
os.write(buffer, 0, len);
}
os.flush();
MultipartFile multipartFile = new CommonsMultipartFile(fileItem);
//String fileInfo = storageService.uploadFile(multipartFile);
return "ok";
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if(is != null){
is.close();
}
} catch (IOException e) {
e.printStackTrace();
}
try {
if(os != null){
os.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
return null;
}
}
|