當前位置:首頁 » 文件管理 » jsp上傳限制

jsp上傳限制

發布時間: 2022-04-21 00:15:09

① JSP上傳文件

ServletFileUpload sfu = new ServletFileUpload(itemFactory);
// 設置上傳文件的最大文件為10M
sfu.setSizeMax(0xA00000);
限制上傳文件的的最大值的屬性值設置

② JSP實現圖片上傳功能,本地測試沒問題,發布到伺服器上圖片大小就不能超過50K,有遇到過這個問題的嗎

你是說圖片太大傳不了吧?
這是由於空間商限制了上傳大小的。
他們可以通過前端伺服器(apache,nginx這些)來限制大小的就算給你tomcat的所有配置許可權你也改不了他們的限制。
國內現在的JSP主機很爛。做jsp還是自已搞主機,或買linux VPS自已建環境的好。

③ JSP 上傳防止重復

你是防止重復什麼
是重復提交?還是重復名字?說清楚點
如果是防止重復提交
那你設置一個boolean變數
初始化是false
只有固定的通過某個渠道才能變為true
在上傳完畢以後
改為false
這樣來防止
如果是名字
你可以在後面追加一個時間
可以精確到毫秒再加一個隨即數字
這樣也可以

④ 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(maxSize>1.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 上傳前能否先判斷文件是否符合大小和格式限制啊

Connection conn = DataBase.getConnection();
ProctDAO proctDao = new ProctDAO();
CategoryDAO categoryDao = new CategoryDAO();
categoryDao.setConn(conn);
Proct proct = new Proct();
proctDao.setConn(conn);
//上傳文件
SmartUpload upload = new SmartUpload();
// 上傳初始化
upload.initialize(this.getServletConfig(), request, response);
// 設定上傳限制
// 1.限制每個上傳文件的最大長度。
upload.setMaxFileSize(1000000);
// 2.限制總上傳數據的長度。
upload.setTotalMaxFileSize(10000000);
// 3.設定允許上傳的文件(通過擴展名限制),僅允許gif.jpg文件。
upload.setAllowedFilesList("gif,jpg");
// 4.設定禁止上傳的文件(通過擴展名限制),禁止上傳帶有exe,bat,
// jsp,htm,html擴展名的文件和沒有擴展名的文件。
upload.setDeniedFilesList("exe,bat,jsp,htm,html");
//上傳文件
upload.upload();
//利用request對象獲取參數,接參

這個是我們用的upload 老師上課給的例子 下面代碼就不給出了 都一樣

⑥ 求助:jsp上傳圖片時限制長寬

這個,貌似實在後台控制文件接受的地方放實現,如果超時結束接受文件返回超時信息。

⑦ jsp做網頁上傳圖片時,怎樣限制上傳圖片的尺寸

試試如下代碼
<html>
<head>
<title>Upload Image </title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<SCRIPT LANGUAGE="JavaScript">
<!--
function imgExceedSize(w,h){
if(!document.IUpload.picsrc.value==""){
if(picshow.width>w||picshow.height>h){
alert("圖像尺寸:"+picshow.width+"X"+picshow.height+"。\\圖像尺寸過大!你只能上傳尺寸為 "+w+"×"+h+"的圖像,請重新瀏覽圖片!");
return true;
}else{
return false;
}
}else{
return true;
}
}
function detect(){
document.getElementById('pic_show').style.display = '';
var ok=imgExceedSize(100,100);
if(ok){
document.IUpload.reset();
}else{
document.IUpload.submit();
}
}
//-->
</SCRIPT>
</head>

<body>
<form name="IUpload" action="upfile.asp" method="post">
<p> <input type="file" name="picsrc" size="40" onchange="picshow.src=document.IUpload.picsrc.value">
<input type="button" value="上載" onclick="detect()"> </p> </form>
<div id="pic_show" style="display:none;"> <img name="picshow" src="" title="圖像預覽"> </div>
</body>
</html>

⑧ 小弟我想在jsp頁面上傳文件 請教如何限

使用javascript,先在客戶端判斷要上傳的文件的大小,如果超過上限值,不提交。
服務端也得判斷。
jsp頁面上傳圖片之後頁面,當前頁面的顯示上傳的圖片可以自行更新。
第一種就是用JS直接在客戶端判斷截斷掉.或AJAX把後綴提交到伺服器再判斷.但這樣不安全.
第二種就是在伺服器端判斷了.

⑨ jspsmartupload不設置上傳文件類型限制

這個方法,不是必需使用的。

setAllowedFilesList("jpg,bmp");

注意大小寫

⑩ jsp如何限制上傳文件的類型

你可以使用上傳文件的插件的相關API來獲取上傳文件的擴展名,
不知道你用的上傳文件的插件是哪個?
這里舉個SmartUpload的例子:

<jsp:useBean id="smart" scope="page" class="com.jspsmart.upload.SmartUpload"/>
<%
String ext = smart.getFiles().getFile(0).getFileExt() ;
//取得所上傳的第一個文件的擴展名.
%>
=============================================================

那你的上傳文件是有使用
<input type="file" name="fileName">
這樣的的HTML標簽吧?

如果是這樣的話,當你提交後,
你可以使用下面的語句來獲取文件的擴展名,然後寫相應的擴展名限制語句

<%
String fullFileName = request.getParameter("fileName");
int index = fullFileName.lastIndexOf('.');
String ext = fullFileName.substring(index+1);
%>
<br>
<%=ext%>

====================================================

那你所上傳的MIME類型是怎麼獲取的?
不也就是Web容器根據你所上傳的文件的擴展名在其相關的xml配置文件中(比如說Tomcat的全局web.xml)中的
<mime-mapping>
<extension>xxx</extension>
<mime-type>xxx/xxx</mime-type>
</mime-mapping>
中獲取mime類型的嗎?
說到底,mime類型的判斷還是通過擴展名來實現的,
那麼你可以在你的Web容器的相關配置文件中設置允許被上傳的mime映射,
然後在處理上傳文件的時候,在相關代碼中寫限制的代碼,如果此上傳文件的類型不在mime映射范圍內,就不進行保存處理.

=================================================================
明白你的意思了,你是想通過所上傳文件的文件頭信息中的相關信息來獲取此文件的MIME類型,然後再進行相關的限制吧?

=====================================
參見http://..com/question/100623013.html的回答
我覺得你不用其他的上傳組件,至少你做Web項目要用Struts吧,
Struts中的org.apache.struts.upload.FormFile這個介面可以對上傳的文件進行封裝,然後通過其getContentType()返回的是一個所上傳文件的MIME類型字元串,我測試過了,即使所上傳文件沒有擴展名,這個方法也可根據所上傳的文件取到其MIME類型,這就可以根據這個方法返回的字元串值,在相應的業務邏輯中寫限制的代碼了吧.

熱點內容
創建存儲空間 發布:2024-05-18 21:20:57 瀏覽:120
sql日期和時間 發布:2024-05-18 21:16:19 瀏覽:141
安卓網頁怎麼截取 發布:2024-05-18 20:53:56 瀏覽:970
在配置更新的時候沒電關機怎麼辦 發布:2024-05-18 20:36:10 瀏覽:927
win7訪問win2000 發布:2024-05-18 20:27:41 瀏覽:388
青島人社局密碼多少 發布:2024-05-18 20:19:10 瀏覽:734
無法存儲呼叫轉移 發布:2024-05-18 20:18:30 瀏覽:126
資料庫的調優 發布:2024-05-18 20:18:29 瀏覽:346
sqlserver注冊表清理 發布:2024-05-18 20:13:14 瀏覽:991
linux刪除連接 發布:2024-05-18 20:06:56 瀏覽:822