今天在linux服务器上发布程序后,上传图片处理异常,详情如下:
写道
javax.servlet.ServletException: org/apache/commons/fileupload/servlet/ServletFileUpload.parseRequest(Lorg/apache/commons/fileupload/RequestContext;)Ljava/util/List;
at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1082)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:907)
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:145)
at gat.sx.ldrk.util.LoginCheckFilter.doFilter(LoginCheckFilter.java:199)
at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:190)
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:130)
at gat.sx.commons.filter.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:122)
at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:190)
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:130)
at com.ibm.ws.webcontainer.filter.WebAppFilterChain._doFilter(WebAppFilterChain.java:87)
at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:696)
at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:641)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:475)
at com.ibm.ws.wswebcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:463)
at com.ibm.ws.webcontainer.webapp.WebApp.handleRequest(WebApp.java:3107)
at com.ibm.ws.webcontainer.webapp.WebGroup.handleRequest(WebGroup.java:238)
at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:811)
at com.ibm.ws.wswebcontainer.WebContainer.handleRequest(WebContainer.java:1425)
at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:92)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:465)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewInformation(HttpInboundLink.java:394)
at com.ibm.ws.http.channel.inbound.impl.HttpICLReadCallback.complete(HttpICLReadCallback.java:102)
at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:152)
at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:213)
at com.ibm.io.async.AbstractAsyncFuture.fireCompletionActions(AbstractAsyncFuture.java:195)
at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:136)
at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:193)
at com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:725)
at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:847)
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1498)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1082)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:907)
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:145)
at gat.sx.ldrk.util.LoginCheckFilter.doFilter(LoginCheckFilter.java:199)
at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:190)
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:130)
at gat.sx.commons.filter.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:122)
at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:190)
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:130)
at com.ibm.ws.webcontainer.filter.WebAppFilterChain._doFilter(WebAppFilterChain.java:87)
at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:696)
at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:641)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:475)
at com.ibm.ws.wswebcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:463)
at com.ibm.ws.webcontainer.webapp.WebApp.handleRequest(WebApp.java:3107)
at com.ibm.ws.webcontainer.webapp.WebGroup.handleRequest(WebGroup.java:238)
at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:811)
at com.ibm.ws.wswebcontainer.WebContainer.handleRequest(WebContainer.java:1425)
at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:92)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:465)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewInformation(HttpInboundLink.java:394)
at com.ibm.ws.http.channel.inbound.impl.HttpICLReadCallback.complete(HttpICLReadCallback.java:102)
at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:152)
at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:213)
at com.ibm.io.async.AbstractAsyncFuture.fireCompletionActions(AbstractAsyncFuture.java:195)
at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:136)
at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:193)
at com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:725)
at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:847)
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1498)
在windows服务器及本机上异常,初步怀疑为jdk版本不同。
后经测试,发现 commons-fileupload.jar 在本地居然有两个版本,导致jar包冲突,删去低版本后异常解决。
总结,没用的jar包尽早删掉。
相关推荐
List<FileItem> items = upload.parseRequest(request); Iterator<FileItem> iter = items.iterator(); while (iter.hasNext()) { FileItem item = iter.next(); if (item.isFormField()) { // 处理普通表单...
- 在解析请求时,`ServletFileUpload.parseRequest()`方法会使用这些编码来解码文件名和表单字段。 2. **实现多文件上传**: 使用`ServletFileUpload`可以轻松处理多个文件的上传。以下是一个基本示例: ```...
4. **异常处理**:对上传过程中可能出现的错误进行捕获和处理,如文件大小超出限制、文件类型不匹配等。 三、API详解 1. **DiskFileItemFactory**:用于创建`FileItem`对象,管理临时文件的存储。你可以设置内存...
然后,你可以通过调用`ServletFileUpload.parseRequest()`方法解析请求,得到`FileItem`的集合。遍历这个集合,对于每个`FileItem`,如果它是文件,你可以通过`isFormField()`方法检查,然后使用`write()`方法将其...
- 如果是多部分请求,通过`ServletFileUpload.parseRequest()`方法解析请求,得到`FileItem`的集合。 3. **处理FileItem**: - `FileItem`接口代表了请求中的一个部分,可以是普通表单字段或上传文件。 - 对每个...
5. **解析请求**:调用`ServletFileUpload.parseRequest(request)`方法解析HTTP请求,返回一个`FileItemIterator`,你可以迭代其中的`FileItem`对象。 6. **处理FileItems**:每个`FileItem`代表表单的一个字段。...
3. 调用`ServletFileUpload.parseRequest(request)`解析HTTP请求,得到`FileItem`的集合。 4. 遍历`FileItem`集合,处理每个文件项。如果是普通表单字段,可以获取其值;如果是文件,可以保存到服务器或进行其他处理...
在`doPost`方法中,通过`ServletFileUpload.parseRequest(request)`获取到一个`FileItem`列表,`FileItem`对象代表了请求中的一个字段,可能是普通的表单字段或上传的文件。遍历这个列表,对于每个`FileItem`,如果...
// 其他异常处理 } } } ``` ### 5. 安全注意事项 - **文件类型检查**:应检查上传的文件类型,防止恶意用户上传可执行文件或脚本。 - **文件重命名**:避免覆盖已有文件,同时防止路径遍历攻击,重命名上传的...
3. 调用`ServletFileUpload.parseRequest(HttpServletRequest request)`解析HTTP请求,获取`FileItem`列表。 4. 遍历`FileItem`列表,处理每个上传的文件或字段。 在处理文件上传时,需要注意以下几点: - **安全...
3. 调用`ServletFileUpload.parseRequest(request)`解析`HttpServletRequest`,得到`FileItemIterator`。 4. 遍历`FileItemIterator`,处理每个`FileItem`。如果是文本字段,可以直接读取内容;如果是文件,可以将其...
3. **解析请求**: 使用`ServletFileUpload.parseRequest(request)`方法解析HTTP请求,得到`FileItemIterator`。 4. **处理文件项**: 遍历`FileItemIterator`,对每个`FileItem`进行操作,如保存文件到服务器、读取...
3. **异常处理**:处理可能出现的异常,如文件类型错误、大小超出限制等,返回适当的错误信息。 ### 示例代码 在`upload_3.html`中,可能包含了一个HTML表单,用于用户选择文件并提交上传。HTML表单应设置`enctype=...
在实际开发中,还需要考虑异常处理、安全性(如防止路径遍历攻击、大小限制等)、文件重命名以避免冲突等问题。在"fileUpload"这个示例文件中,可能包含了实现上述功能的具体代码和配置文件,你可以通过查看这些文件...
5. **异常处理与验证** 在处理文件上传时,必须考虑文件大小限制、非法文件类型等问题。可以设置最大上传文件大小并在Action中进行验证。例如,通过检查`getSize()`并比较限制值。同时,检查文件扩展名以确保上传的...
2. 异常处理:捕获并处理解析、写入文件时可能出现的异常。 3. 性能优化:合理设置内存阈值,避免大文件一次性加载到内存。 4. 文件命名:避免使用原始文件名,防止路径遍历攻击,应生成唯一的文件名。 六、源码...
4. **解析请求**:在`doPost`方法中,调用`ServletFileUpload.isMultipartContent(request)`判断请求是否为多部分类型,然后使用`ServletFileUpload.parseRequest(request)`解析请求。 5. **处理文件**:解析后的...
5. 使用parseRequest方法解析请求,得到FileItemIterator。 6. 遍历FileItemIterator,处理每个FileItem对象。 7. 对于非文件项,可以直接获取其内容;对于文件项,可以保存到服务器或进行其他操作。 三、关键类和...
- **异常处理**: `FileUploadException`是处理文件上传时可能出现的异常的基类。其他异常如`FileSizeLimitExceededException`、`SizeLimitExceededException`等都是它的子类,用于表示特定类型的错误。 - **安全性...
2. **解析请求**: 使用`ServletFileUpload.parseRequest()`方法解析`HttpServletRequest`,获取到`FileItem`对象列表。 3. **处理FileItem**: 对每个`FileItem`进行检查,判断是否为普通字段或上传文件。如果是文件...