導航:首頁 > 文件教程 > java上傳大文件

java上傳大文件

發布時間:2023-05-15 15:43:54

java文件分片上傳處理如何實現

如果是頁面傳至後台,那麼頁面上傳文件的時候進行分片處理,如果是後台之間調用,直接代理裡面分片處理。關鍵點,當前一片傳輸完畢之後,收到成功返回才開始傳輸下一片如果傳輸失敗則重傳當前片數,超時重傳。傳輸時帶上文件唯一標識,文件當前片數,總片數,當前片數md5校驗值等。必要參數。 大致為這樣,注意不要內存泄露了。

Ⅱ java ftp上傳5G以上大文件,怎麼做

java上傳可以使用common-fileupload上傳組件的。common-fileupload是jakarta項目組開發的一個功能很強大的上傳文件組件下面先介紹上傳文件到伺服器(多文件上傳):import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
import java.util.regex.*;
import org.apache.commons.fileupload.*;
public class upload extends HttpServlet {
private static final String CONTENT_TYPE = "text/html; charset=GB2312";
//Process the HTTP Post request
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType(CONTENT_TYPE);
PrintWriter out=response.getWriter();
try {
DiskFileUpload fu = new DiskFileUpload();
// 設置允許用戶上傳文件大小,單位:位元組,這里設為2m
fu.setSizeMax(2*1024*1024);
// 設置最多隻允許在內存中存儲的數據,單位:位元組
fu.setSizeThreshold(4096);
// 設置一旦文件大小超過getSizeThreshold()的值時數據存放在硬碟的目錄
fu.setRepositoryPath("c:\\windows\\temp");
//開始讀取上傳信息
List fileItems = fu.parseRequest(request);
// 依次處理每個上傳的文件
Iterator iter = fileItems.iterator();//正則匹配,過濾路徑取文件名
String regExp=".+\\\\(.+)$";//過濾掉的文件類型
String[] errorType={".exe",".com",".cgi",".asp"};
Pattern p = Pattern.compile(regExp);
while (iter.hasNext()) {
FileItem item = (FileItem)iter.next();
//忽略其他不是文件域的所有表單信息
if (!item.isFormField()) {
String name = item.getName();
long size = item.getSize();
if((name==null||name.equals("")) && size==0)
continue;
Matcher m = p.matcher(name);
boolean result = m.find();
if (result){
for (int temp=0;temp if (m.group(1).endsWith(errorType[temp])){
throw new IOException(name+": wrong type");
}
}
try{//保存上傳的文件到指定的目錄//在下文中上傳文件至資料庫時,將對這里改寫
item.write(new File("d:\\" + m.group(1))); out.print(name+" "+size+"
");
}
catch(Exception e){
out.println(e);
} }
else
{
throw new IOException("fail to upload");
}
}
}
}
catch (IOException e){
out.println(e);
}
catch (FileUploadException e){
out.println(e);
}

}
}

Ⅲ JAVA 前端大文件上傳如何實現

如果是頁面傳至後台,那麼頁面森信上傳文件的時候進行分片處理,如果是後台之間調用,直接代理裡面分片處理。關鍵點,當前一片傳輸完畢之後,收到成功返回才開始傳輸下一片如果傳輸失敗則重傳當前片數,超時重傳。傳輸時帶上文件唯一標識,文件當前片數,總片數,當前片數md5校驗值等。必要參數。 大致為洞春塌這樣,注意不要內存泄露了納圓。

Ⅳ java大文件上傳後如何判斷什麼時候下載

1、通過HTTP協議頭中的Content-Length欄位可以斗信知道文件的大小,可以判斷上虛鋒傳的文件是否完整。
2、通過應用層協議,服務端會返回接收文件的狀態,客戶端可差銷晌以根據狀態判斷文件是否完整上傳成功。

Ⅳ java通過sftp上傳大文件,時間長,而且會提示超出GC開銷限制,內存溢出,這種問題怎麼解決

public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("GBK");
HttpSession session = (HttpSession) request.getSession();
final long MAX_SIZE = 10 * 1024 * 1024;// 設置上傳文件最大為 10M
// 允許上傳的文件格式的列表
final String[] allowedExt = new String[] { "jpg", "jpeg", "gif", "png",
"JPG", "bmp", "BMP" };
response.setContentType("text/html;charset=gbk");
// 設置字元編碼為UTF-8, 這樣支持漢字顯示
response.setCharacterEncoding("GBK");
String strImageName = (String) session.getAttribute("strName");
if (ServletFileUpload.isMultipartContent(request)) {
// 實例化一個硬碟文件工廠,用來配置上傳組件ServletFileUpload
DiskFileItemFactory dfif = new DiskFileItemFactory(); dfif.setSizeThreshold(4096);// 設置上傳文件時用於臨時存放文件的內存大小,這里是4K.多於的部分將臨時存在硬碟
dfif.setRepository(new File(this.getServletContext().getRealPath(
"/")
+ "Image"));// 設置存放臨時文件的目錄,web根目錄下的Image目錄
// 用以上工廠實例化上傳組件
ServletFileUpload sfu = new ServletFileUpload(dfif); // 設置最大上傳尺寸
sfu.setSizeMax(MAX_SIZE); PrintWriter out = response.getWriter();
// 從request得到 所有 上傳域的列表
List fileList = null;
try {
fileList = sfu.parseRequest(request);
} catch (FileUploadException e) {// 處理文件尺寸過大異常
if (e instanceof SizeLimitExceededException) {
out.println("文件尺寸超過規定大小:" + MAX_SIZE + "位元組<p />");
out.println("<a href='addGoods.jsp' >返回</a>");
return;
}
e.printStackTrace();
}
// 沒有文件上傳
if (fileList == null || fileList.size() == 0) {
out.println("請選擇要上傳文件a<p />");
out.println("<a href='addGoods.jsp' >返回</a>");
return;
}
// 得到所有上傳的文件
Iterator fileItr = fileList.iterator();
// 循環處理所有文件
this.list = new ArrayList();
while (fileItr.hasNext()) {
long size = 0;
// 得到當前文件
fileItem = (FileItem) fileItr.next();
// 忽略簡單form欄位而不是上傳域的文件域(<input type="text" />等)
if (fileItem == null || fileItem.isFormField()) {
System.out.println(fileItem.getFieldName());
inputstr = fileItem.getString("GBK");
list.add(inputstr);
continue;
}
// 得到文件的完整路徑
path = fileItem.getName();
// 得到文件的大小
size = fileItem.getSize();
if ("".equals(path) || size == 0) {
out.println("請選擇上傳文件<p />");
out.println("<a href='addGoods.jsp' >返回</a>");
return;
}
System.out.println("文件的完整路徑" + path);
// 得到去除路徑的文件名
t_name = path.substring(path.lastIndexOf("\\") + 1);
// 得到文件的擴展名(無擴展名時將得到全名)
String t_ext = t_name.substring(t_name.lastIndexOf(".") + 1);
// 拒絕接受規定文件格式之外的文件類型
//System.out.println("文件名:" + t_name);
//System.out.println("文件擴展名:"+t_ext);
// System.out.println(t_ext);
int allowFlag = 0;
int allowedExtCount = allowedExt.length;
for (; allowFlag < allowedExtCount; allowFlag++) {
if (allowedExt[allowFlag].equals(t_ext))
break;
}
if (allowFlag == allowedExtCount) {
out.println("請上傳以下類型的文件<p />");
for (allowFlag = 0; allowFlag < allowedExtCount; allowFlag++)
out.println("*." + allowedExt[allowFlag]
+ " ");
out.println("<p /><a href='addGoods.jsp' >返回</a>");
return;
}
long now = System.currentTimeMillis();
// 根據系統時間生成上傳後保存的文件名
u_name = this.getServletContext().getRealPath("/")
+ "ImageDown\\" + t_name;
//System.out.println(u_name);
try {
// 保存文件
fileItem.write(new File(u_name));
/*out
.println("文件上傳成功. 文件大小: " + size
+ "位元組<p />");
out.println("圖片上傳成功!"
+ "<a href='addGoods.jsp' >繼續添加商品</a>");*/
} catch (Exception e) {
e.printStackTrace();
}
}

Ⅵ java傳輸大文件

可以通過BufferedReader 流的形式進行流緩存,之後通過readLine方法獲取到緩存的內容。
可以通過「FileOutputStream」創建文件實例,之後過「OutputStreamWriter」流的形式進行存儲。舉例:
BufferedReader bre = null;
OutputStreamWriter pw = null;//定義一個流
try {
pw = new OutputStreamWriter(new FileOutputStream(「D:/test.txt」),"GBK");//確認流的輸出文件和編碼格式,此過程創建了「test.txt」實例

String file = "D:/test/test.txt";
bre = new BufferedReader(new FileReader(file));//此時獲取到的bre就是整個文件的緩存流
while ((str = bre.readLine())!= null) // 判斷最後一行不存在,為空結束循環
{
pw.write(str);
};
bre.close();//關閉流
pw.close();//關閉流
備註:文件流用完之後必須及時通過close方法關閉,否則會一直處於打開狀態,直至程序停止,增加系統負擔。

Ⅶ java springboot 大文件分片上傳處理如何實現

java springboot 大文件分片上傳處理
這里只寫後端的代碼,基本的思想就是,前端將文件分片,然後每次訪問上傳介面的時候,向後端傳入參數:當前為第幾塊文件,和分片總數
下面直接貼代碼吧,一些難懂的我大部分都加上注釋了:
上傳文件實體類:
看得出來,實體類中已經有很多我們需要的功能了,還有實用的屬性。如MD5秒傳的信息。

Ⅷ Java 批量大文件上傳下載如何實現

解決這種大文件上傳不太可能用web上傳的方式,只有自己開發插件或是當門客戶端上傳,或者用現有的ftp等。
1)開發一個web插件。用於上傳文件。
2)開發一個FTP工具,不用web上傳。
3)用現有的FTP工具。
下面是幾款不錯的插件,你可以試試:
1)Jquery的uploadify插件。具體使用。你可以看幫助文檔。

Ⅸ java springmvc 大文件分片上傳處理

*/@ApiModel("大文件分片入參實體")public class MultipartFileParam {
@ApiModelProperty("文件傳輸任務ID") private String taskId;
@ApiModelProperty("當前為第幾分片") private int chunk;
@ApiModelProperty("每個分塊版的大小") private long size;

@ApiModelProperty("分片總數") private int chunkTotal;
@ApiModelProperty("主體權類型--這個欄位是我項目中的其他業務邏輯可以忽略") private int objectType;
@ApiModelProperty("分塊文件傳輸對象") private MultipartFile file;

Ⅹ java上傳和下載的文件大小不同

是的,JAVA上傳芹告和下載的文件大小是可以不同的。上傳的文件的最大文件大小完全取決於應用程序的處理,而下載的文件大小受到沖滲 JVM(Java虛擬機)的限制,如果嫌判明空間不夠或者受到系統資源的限制,文件將無法下載。

閱讀全文

與java上傳大文件相關的資料

熱點內容
編程怎麼做3d生存游戲 瀏覽:955
word使用教程下載 瀏覽:295
電腦文件平鋪圖片默認大小 瀏覽:115
文件查看設置信息失敗 瀏覽:668
編程如何編出烏鴉喝水的課文 瀏覽:20
國家反詐app報案助手怎麼使用 瀏覽:439
秘密文件丟失多少天 瀏覽:237
js中csstext 瀏覽:382
目標文件名過長復制 瀏覽:892
樂動力計步器老版本 瀏覽:933
壓縮文件鏈接怎麼編輯 瀏覽:808
如何鎖定PDF文件里的圖章 瀏覽:89
資料庫超時是什麼 瀏覽:649
文件怎麼改整列內容 瀏覽:764
360壓縮文件發郵件空白 瀏覽:813
上哪裡查自己大數據 瀏覽:907
編程語言怎麼學車 瀏覽:189
編程該怎麼學才能先找工作 瀏覽:524
文件刻制光碟多少錢 瀏覽:861
校園網的網路組成結構 瀏覽:862

友情鏈接