`
b_l_east
  • 浏览: 639189 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

解决Struts2上传文件后文件大小变大

阅读更多

今天练习Struts2是时,发现了一个有趣的现象:Struts2上传后的文件,跟原文件有出入,变大了。

 

无论是图片文件还是文本文件都是这样。我特地对文本文件进行了对比,发现上传后的文件有重复的字符。并且俺对前后两个文件的属性进行了查看对比。发现原文件和上传后文件的属性很有意思,如下:

                  原文件

                  上传后文件

那这个到底是框架上传文件时自身问题,还是我们在保存文件时有问题呢,我特地打印了框架上传后的临时文件大小,发现跟原文件一样仍是:3175.

 

那问题就出在保存文件这一关了,我的代码是这样的。

		InputStream fis = new FileInputStream(file);
		OutputStream fos = new FileOutputStream(filePath);
		byte[] bs = new byte[2*1024];
		int i ;
		while ((i = fis.read(bs)) > 0) {
			fos.write(bs);
		}
		fis.close();
		fos.flush();
		fos.close();
 

问题会在哪里呢,后来发现问题在

fos.write(bs);

 将其改成:

fos.write(bs, 0, i);

 上传前后文件就一致了。

 

问题应该是缓存数组处理的问题了,看来流的那些方法不是无用的,不能偷懒。

 

注:最好配置上Struts2的cleanup过滤器

  <!-- Struts Cleanup Filter -->
  <filter>
  	<filter-name>struts2-cleanup</filter-name>
  	<filter-class>org.apache.struts2.dispatcher.ActionContextCleanUp</filter-class>
  </filter>
  <filter-mapping>
  	<filter-name>struts2-cleanup</filter-name>
  	<url-pattern>/*</url-pattern>
  </filter-mapping>
 

 

  • 大小: 4.1 KB
  • 大小: 4 KB
分享到:
评论
1 楼 kevin.s 2012-11-01  

相关推荐

    struts文件上传大小限制问题

    在处理文件上传功能时,Struts框架会涉及到文件大小的限制,以防止恶意用户上传过大的文件导致服务器资源耗尽。本篇文章将详细探讨Struts文件上传大小限制的问题。 首先,我们需要理解文件上传的基本流程。在Struts...

    struts2实现文件上传下载

    可以通过验证文件扩展名、限制文件大小和类型,以及将上传的文件保存到指定的安全目录来提高安全性。 6. **优化与拓展** 对于大量文件上传,可以考虑使用多线程处理,提高上传效率。还可以添加进度条显示、断点续...

    struts2文件上传,文件大小设置

    本篇将详细介绍Struts2中如何进行文件大小设置,以及涉及到的拦截器配置和灵活性。 首先,我们需要理解Struts2的文件上传机制。在Struts2中,文件上传是通过`&lt;s:file&gt;`标签实现的,这个标签会创建一个`File`对象,...

    JavaEE Struts文件上传

    Struts框架通过解析这个格式化的请求,可以获取到上传文件的信息。 1. **配置Struts2 Action**:在Struts2中,我们需要创建一个Action类来处理文件上传请求。这个类通常需要实现`ServletRequestAware`接口,以便...

    struts2文件上传下载源代码

    2. **设置Struts2配置**:配置文件需要指定允许上传的文件大小、类型等。例如,使用`&lt;constant&gt;`标签设置`struts.multipart.parser`为`jakarta`,以启用`Commons FileUpload`。 3. **编写Action类**:在Action类中...

    struts2上传文件源代码

    在这个“struts2上传文件源代码”中,我们将深入探讨Struts2如何实现文件上传功能,以及涉及到的相关知识点。 首先,文件上传是Web应用中常见的功能,它允许用户从本地计算机选择文件并将其发送到服务器。在Struts2...

    struts2 上传文件超过最大值解决办法

    在Struts2框架中,处理文件上传是一项常见且重要的功能,尤其当涉及到大文件上传时,往往会遇到上传文件大小超过预设限制的问题。这不仅影响用户体验,还可能导致应用程序出现异常或错误。本文将深入探讨如何解决...

    Struts2 上传文件(带过滤文件类型和大小)

    限制文件大小同样是为了防止过大文件消耗过多服务器资源。除了在`struts.xml`中设置全局的最大上传大小外,还可以在Action中进行额外的验证: ```java if (file.length() &gt; 1048576) { // 1MB addFieldError("file...

    struts+spring文件上传大小限制.rar

    如果上传文件大小超过这个限制,Struts会抛出`MaxUploadSizeExceededException`异常。 2. Spring框架中的文件上传: Spring提供了`CommonsMultipartFile`类来处理文件上传,它是基于Apache Commons FileUpload库的...

    struts2上传文件进度条显示

    这里我们启用了multipart/form-data类型的数据解析,并设置了最大上传文件大小为20MB。 接下来,创建一个Action类来处理文件上传请求。这个类需要继承自`org.apache.struts2.dispatcher.multipart....

    struts2文件上传

    默认情况下,这个拦截器可能会限制上传文件的类型为`.txt`,并且大小不超过10MB。这种限制是为了防止恶意用户上传大文件或者非文本文件,从而可能对服务器造成压力或引入安全风险。 配置文件`struts.xml`中关于文件...

    struts2+jquery+ajax文件异步上传

    在Struts2的配置文件中,我们可以定义这些规则,例如限制上传文件的大小,只接受特定类型的文件(如图片、文档等)。此外,我们还需要关注安全问题,防止恶意文件上传。 文件上传的实现通常包括以下几个步骤: 1. ...

    struts2文件上传例子.rar

    同时,我们还需要配置`struts.multipart.saveDir`属性,指定临时文件保存的位置,以及`struts.multipart.maxSize`,限制上传文件的最大大小。 在视图层,通常会有一个HTML表单,使用`enctype="multipart/form-data...

    struts2 实现文件批量上传

    4. **文件验证**:在处理文件上传时,通常需要对文件大小、类型等进行验证。这可以通过自定义拦截器或在Action类的方法中实现。 5. **文件存储**:上传的文件需要存储在服务器的某个位置。可以选择临时目录、特定的...

    struts2实现的文件上传(带文件类型和大小大小验证的)

    文件上传功能是Web应用中常见的需求,Struts2为此提供了完善的解决方案。在这个"struts2实现的文件上传(带文件类型和大小验证的)"示例中,我们将深入探讨如何在Struts2中实现这一功能。 首先,我们需要在Struts2...

    swfuplaod+struts2实现多文件上传

    3. **文件大小限制**:设定上传文件的大小上限,防止DoS攻击。 4. **权限控制**:确保只有授权用户可以访问上传的文件。 **五、优化与扩展** 为了进一步优化用户体验,可以考虑以下方面: 1. **错误处理**:提供...

    Struts2文件上传源码

    Struts2是一个流行的Java Web框架,它为开发者提供了一种优雅的方式来构建可维护、可扩展且结构清晰的Web应用程序。...理解源码有助于你更好地掌握Struts2的工作原理,从而在遇到问题时能更高效地定位和解决。

    struts2文件上传实例

    7. **结果展示**:文件上传成功后,可以返回一个结果页面,显示上传成功的信息,或者提供上传文件的链接。这可以通过Struts2的`&lt;s:property&gt;`标签或者JSP的EL表达式实现。 8. **安全性**:在实际应用中,必须注意...

Global site tag (gtag.js) - Google Analytics