配置servlet支持文件上传

Servlet3.0为Servlet添加了multipart配置选项,并为HttpServletRequest添加了getPart和getParts方法获取上传文件。为了使Servlet支付文件上传需要作如下配置。

1、使用注解配置

//@MultipartConfig将告诉web容器为改servlet提供文件上传支持
@MultipartConfig(     
        //fileSizeThreshold将告诉web容器文件必须达到多大才能写入到临时文件
        //本例中是文件小于5MB将保存到内存中,请求完成由垃圾回收器回收
        //文件超过5MB,容器将把文件保存到location指向的临时文件,请求完成后容器从磁盘中删除该文件
        fileSizeThreshold = 5_242_880, //5MB
        //location告诉浏览器在哪里存储临时文件,可忽略,让应用服务器使用它默认临时目录即可
        location = "url", 
        //maxFileSize设置上传文件的最大值,如下是上传文件不能超过20MB
        maxFileSize = 20_971_520L, //20MB
        //maxRequestSize设置请求的最大值,如下是一个请求不能超过40MB,文件数据不限
        maxRequestSize = 41_943_040L //40MB
)

2、在web.xml使用部署描述符配置,作用跟注解一样,这里不做过多解释

    <servlet>
        <multipart-config>
            <file-size-threshold></file-size-threshold>
            <location></location>
            <max-file-size></max-file-size>
            <max-request-size></max-request-size>
        </multipart-config>
    </servlet>

 

转载于:https://my.oschina.net/u/3496297/blog/1813387

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Web应用中实现文件上传,需要使用HTML中的表单(form)以及Java中的Servlet完成。下面是实现文件上传的简单示例: 首先,在HTML中创建表单,设置"enctype"属性为"multipart/form-data",并添加一个文件选择框: ``` <form action="upload" method="POST" enctype="multipart/form-data"> <input type="file" name="file"> <input type="submit" value="上传"> </form> ``` 然后,在Java中编写Servlet代码来处理上传的文件。通过获取HttpServletRequest对象,并调用其getParameter方法来获取上传的文件。最后,将上传的文件保存到指定的位置。 ``` @WebServlet("/upload") @MultipartConfig public class FileUploadServlet extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { Part filePart = request.getPart("file"); String fileName = getFileName(filePart); InputStream fileContent = filePart.getInputStream(); String savePath = "path/to/save/file/" + fileName; Files.copy(fileContent, Paths.get(savePath), StandardCopyOption.REPLACE_EXISTING); } private String getFileName(Part part) { String contentDisposition = part.getHeader("content-disposition"); String[] tokens = contentDisposition.split(";"); for (String token : tokens) { if (token.trim().startsWith("filename")) { return token.substring(token.indexOf("=") + 2, token.length() - 1); } } return ""; } } ``` 在上面的代码中,使用了@MultipartConfig注解来指示Servlet支持文件上传,并通过调用request.getPart方法获取上传的文件。最后,将文件保存到指定的位置。 需要注意的是,上传的文件大小可能比较大,需要设置合适的缓存大小。可以在web.xml文件中添加以下配置: ``` <multipart-config> <max-file-size>10485760</max-file-size> // 10MB <max-request-size>20971520</max-request-size> // 20MB <file-size-threshold>5242880</file-size-threshold> // 5MB </multipart-config> ``` 上面的配置设置了上传的文件最大为10MB,请求大小最大为20MB,缓存大小为5MB。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值