前端jsp文件大小,jsp控制文件上傳大小

本文目錄一覽:

jsp文件上傳如何規定大小

這是jspsmartupload本身一個缺陷!用jspsmartupload上傳東西,當大小超過了某個值後就無法上傳了.也就報出了以下異常:

java.lang.OutOfMemoryError: Java heap space

如果是上傳小的東西,用這個jspsmartupload這個組件足夠了,但是上傳大的文件就不行了.建議用commonupload組件.

究其原因在jspsmartupload源碼中有:

m_totalBytes = m_request.getContentLength();

m_binArray = new byte[m_totalBytes];

int j;

for(; i m_totalBytes; i += j)

….

而m_request就是HttpServletRequest,它一次將文件流全部讀入內存中,也就造成m_totalBytes超級的大,而在new byte[m_totalBytes];時就在內存在分配了一個超大的空間,內存受不了也就直接報異常了.所以除非改掉這種方式的上傳否則是沒法解決這個問題的.

而commonupload就不一般了,它可以設置一次讀取文件最大部分是多少,比部文件有200Mb,你設置一次讀取文件的大小是4MB,那麼也就超過了一次讀4MB到內存,然後就此4MB的部分寫入硬盤中的臨時文件中,然後再讀取下面的4MB,接着把內存的東西刷到硬盤中.也就不會一次讀入內存的東西太多,而造成內存的瀉漏.

以下是使用commonupload上傳的部分代碼

String fileName = ” “;

String appPath = request.getSession().getServletContext().getRealPath(“/”) ;

DiskFileItemFactory factory = new DiskFileItemFactory();

factory.setSizeThreshold(cacheSize); //緩衝大小

File temFile = new File(appPath+tempFileFold); //超過緩衝小放在臨時文件夾,再一步一步上傳

if(!temFile.exists()){

temFile.mkdirs();

}

factory.setRepository(temFile);

ServletFileUpload upload = new ServletFileUpload(factory);

upload.setSizeMax(maxFileSize); //最大大小

List fileList = null ;

try {

fileList = upload.parseRequest(request);

} catch (FileUploadException e) {

if (e instanceof SizeLimitExceededException) {

System.out.println(“超過大小了,返回!”);

double maxSize = maxFileSize/(1024.0*1024.0);

if(maxSize1.0){

float fileSize = Math.round(maxSize*1000)/1000;

request.setAttribute(“message”, MessageResource.readByString(“file_size_overflow”)+fileSize+”M”);

}else{

double kMaxSize = maxFileSize/(1024.0);

float fileSize = Math.round(kMaxSize*100)/100;

request.setAttribute(“message”, MessageResource.readByString(“file_size_overflow”)+fileSize+”K”);

}

request.setAttribute(“page”, request.getParameter(“failpage”));

System.out.println(“page:”+request.getAttribute(“page”)+” messgae:”+request.getAttribute(“message”));

return “”;

}

e.printStackTrace();

}

if (fileList == null || fileList.size() == 0) {

System.out.println(“空文件,返回!”);

return “”;

}

// 得到所有上傳的文件

Iterator fileItr = fileList.iterator();

// 循環處理所有文件

while (fileItr.hasNext()) {

FileItem fileItem = null;

String path = null;

long size = 0;

// 得到當前文件

fileItem = (FileItem) fileItr.next();

// 忽略簡單form字段而不是上傳域的文件域(input type=”text” /等)

if (fileItem == null || fileItem.isFormField()) {

continue;

}

// 得到文件的完整路徑

path = fileItem.getName();

// 得到文件的大小

size = fileItem.getSize();

if (“”.equals(path) || size == 0) {

System.out.println(“空文件2,返回!”);

return “” ;

}

// 得到去除路徑的文件名

String t_name = path.substring(path.lastIndexOf(“\\”) + 1);

// 得到文件的擴展名(無擴展名時將得到全名)

String t_ext = t_name.substring(t_name.lastIndexOf(“.”) + 1);

String[] allowFiles = allowedFilesList.split(“,”);

boolean isPermited = false ;

for(String allowFile:allowFiles){

if(t_ext.equals(allowFile)){

isPermited = true ;

break ;

}

}

if(!isPermited){

request.setAttribute(“message”, t_ext+MessageResource.readByString(“file_format_error”)+allowedFilesList);

request.setAttribute(“page”, request.getParameter(“failpage”));

System.out.println(t_ext+”文件格式不合法,合法文件格式為:”+allowedFilesList);

return “” ;

}

long now = System.currentTimeMillis();

// 根據系統時間生成上傳後保存的文件名

String newFileName = String.valueOf(now)+”.”+t_ext;

// 保存的最終文件完整路徑,保存在web根目錄下的ImagesUploaded目錄下

File desctemFile = new File(appPath + fileLocationFold); //超過緩衝小放在臨時文件夾,再一步一步上傳

if(!desctemFile.exists()){

desctemFile.mkdirs();

}

String u_name = appPath + fileLocationFold

+ newFileName ;

fileName = fileLocationFold+newFileName ;

try {

fileItem.write(new File(u_name));

} catch (Exception e) {

e.printStackTrace();

}

}

return fileName ;

請問jsp頁面如何能獲取到上傳文件的大小,我想通過獲取的大小,判斷該文件是否可以被上傳,請詳細點,謝謝

因權限和安全限制,js是不能獲得本地文件大小的,除非安裝控件。

jsp獲取上傳文件大小方法如下:

long size=request.getContentLength() ;

在文件準備上傳之前就可以得到其大小。

當然了,在客戶端基本上不大可能獲取大文件大小的,必須是文件提交上傳開始後,在服務端獲取得到的,request.getContentLength() ; 可以在接受數據流之前就可以獲得當前要上傳的文件流大小。 這樣你可以在服務端控制文件上傳之前是否允許繼續接受數據流。

jsp頁面使用javascript獲取文件的大小

首先你要明白一些定義,

1 javascript 運行在客戶端,即用戶的瀏覽器上,

2 jsp運行服務器端,比如裝有tomcat的電腦上

3 HTML只會運行在客戶端瀏覽器上

3 放在HTML代碼中的javascript所以也只能運行在客戶端瀏覽器上

4 放在jsp中javascript在服務器端運行生成HTML代碼發送到客戶端瀏覽器上,所以放在jsp中的javascript最終還是只能運行在客戶端瀏覽器上

5 你欲獲取的附件大小在哪裡,客戶端還是服務器端呢,

6 目前考慮安全性方面,客戶端一般是禁止在其瀏覽器上運行的javascript防問其電腦的文件,而且不同的客戶端瀏覽器安全設置是不一樣的,所以如果想獲取客戶端文件大小是行不通的,

7 目前流行的解決辦法,一般既然是附件,都是要上傳到服務器上的,可以上傳的過程中在服務器端進行檢查,在上傳附件頁面要告訴客戶端用戶附件上傳大小的限制,這種提示在網絡會經常見到的(推薦JSP中我常用到的上傳組件jspSmartUpload)

希望這些有拋引作用

.jsp是什麼格式呀 ?

jsp格式文件是一種動態網頁技術標準,是用java語言編寫的動態網頁程序文件,主要出現在網站開發的過程當中。不過有些人會在下載的過程中無意間下載到jsp格式文件,比如downcc.com.jsp,出現這種情況應該是網站有防盜鏈功能的原因(意思A站的內容只允許在A站下載,B網站用就屬於盜鏈)。如果你是這種情況,那麼用下面這個辦法即可解決。

解決辦法其實也挺簡單:就是在下載鏈接上點擊鼠標右鍵然後選擇「另存為」即可下載了。

上面出現了一個小插曲,現在回到主題jsp文件怎麼打開的問題,作為普通網民或是網站開發者如何選擇適合自己的方式打開jsp文件呢?請看下面介紹三種方法:

記事本

如果你並非網站開發者,只是想打開jsp格式的文件看看的話,那麼每台電腦都有的記事本無疑是你最好的幫手了。方法是:打開一個記事本然後把你要打開的jsp文件拖入到記事本就可以了,打開后里是一些代碼。

當然,這些代碼只有學過jsp技術的網站開發人員才讀得懂具體的含義了。但是他們是不會用記事本來打開或編輯jsp文件的,因為如果用記事本來處理顯示得如此沒有條理的代碼,他們的腦細胞可要集體抗議了。下面這兩款工具更適合他們:

優點:電腦無需下載其他軟件即可實現打開jsp文件

缺點:顯示無條理、密密麻麻讓人頭大,且功能上無法滿足基本應用

UE編輯器

UE編輯器全稱UltraEdit,是一款多功能的編輯器,其能打開的文本文件多到我數不出來。對於一個網站開發者而言,UE編輯器顯示的效果以及功能上都要比記事本強很多,所以使用者還是挺多的。

UE編輯器功能實用,而且對jsp文件的一些代碼有功能性醒目標註顯示以及左邊的代碼行數標記,這對於開發者讀、編代碼而言無疑方便了很多。

優點:功能實用,支持眾多在網站開發過程中需要使用的各種格式文件

缺點:不是免費的(但網站能下載到各種綠色版、中文漢化破解版)

Dreamweaver網頁設計軟件

功能強大的專業網頁設計軟件,網頁設計三劍客之一。集網站開發過程中經常使用的多種功能於一身,對於打開jsp這類網站製作過程中常見的格式文件那是必備的底層功能,在功能上超過上面的UE編輯器。是專業、長期網站開發者必備軟件。

優點:功能強大、實用,適合長期的專業開發者使用

缺點:收費軟件,且對於本文「怎麼打開jsp文件」的標題而言,它太「浮腫」了。

上面介紹的這三款軟件對於的不同身份的使用者,可以更具自己的實際需求情況選擇適合自己的方法來處理你的jsp文件。

其實可以打開和編譯JSP文件的軟件還有許多,例如:emeditor,editplus等都是非常不錯的軟件。

原創文章,作者:XHVY,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/145912.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
XHVY的頭像XHVY
上一篇 2024-10-29 18:58
下一篇 2024-10-29 18:58

相關推薦

  • Akka 設置郵箱大小的方法和注意事項

    為了保障系統的穩定性和可靠性,Akka 允許用戶設置郵箱大小。本文將介紹如何在 Akka 中設置郵箱大小,並且提供一些注意事項,以幫助讀者解決可能遇到的問題。 一、設置郵箱大小 A…

    編程 2025-04-28
  • 谷歌瀏覽器窗口大小調整

    谷歌瀏覽器是當今最流行的網絡瀏覽器之一,它的窗口大小調整是用戶操作其中的一個重要部分。本文將從多個方面對谷歌瀏覽器窗口大小調整做詳細的闡述。 一、窗口大小調整的基礎操作 谷歌瀏覽器…

    編程 2025-04-28
  • 矩陣比較大小的判斷方法

    本文將從以下幾個方面對矩陣比較大小的判斷方法進行詳細闡述: 一、判斷矩陣中心 在比較矩陣大小前,我們需要先確定矩陣中心的位置,一般採用以下兩種方法: 1.行列判斷法 int mid…

    編程 2025-04-28
  • 如何通過IDEA設置gradle的heap大小

    在IDEA中設置gradle的heap大小可以有效提高gradle編譯、運行等使用效率,本文將從以下幾個方面介紹如何通過IDEA設置gradle的heap大小。 一、設置gradl…

    編程 2025-04-28
  • 使用 DRF 實現文件上傳

    文件上傳是 web 應用程序中最常見的需求之一,本文將介紹如何使用 Django Rest Framework (DRF) 來實現文件上傳。通過本文,你將學習到如何使用 DRF 中…

    編程 2025-04-28
  • Java Date時間大小比較

    本文將從多個角度詳細闡述Java中Date時間大小的比較,包含了時間字符串轉換、日期相減、使用Calendar比較、使用compareTo方法比較等多個方面。相信這篇文章能夠對你解…

    編程 2025-04-27
  • Python比較兩個數的大小並將它們按照降序輸出

    本篇文章將介紹如何使用Python編寫程序來比較兩個數的大小並將它們按照降序輸出。 一、比較方法 在Python中比較兩個數的大小,我們使用比較運算符,包括: >: 大於 &…

    編程 2025-04-27
  • Java Date 比較時間大小

    本文將從以下方面對 Java Date 比較時間大小進行詳細闡述: 一、比較方法的介紹 Java Date 類提供了多種比較時間大小的方法,其中比較常用的包括: compareTo…

    編程 2025-04-27
  • 為什麼web項目的歡迎頁必須是jsp?

    在web項目中,歡迎頁通常是用戶首次訪問的頁面。而對於這個頁面的選擇,我們通常會選擇jsp作為歡迎頁,其原因是什麼呢? 一、JSP的優勢 JSP與HTML和CSS的結合,可以實現動…

    編程 2025-04-25
  • SpringBoot文件上傳詳解

    一、前言 隨着互聯網的發展,文件上傳成為了必備的功能之一,而SpringBoot作為目前最流行的開發框架之一,為文件上傳提供了便捷而強大的解決方案。 二、使用multipart/f…

    編程 2025-04-24

發表回復

登錄後才能評論