首页 > 编程知识 正文

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

时间:2023-12-27 22:28:10 阅读:327434 作者:REIR

本文目录一览:

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等都是非常不错的软件。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。