gpt4 book ai didi

java - 无法将文件上传到启用 https 的 servlet

转载 作者:行者123 更新时间:2023-11-30 08:06:36 24 4
gpt4 key购买 nike

我的申请中遇到了一个奇怪的问题。

申请详情:- Spring 4、Java 8、Tomcat 8

当我启用 https(在 web.xml 中)并尝试上传多部分文件时,出现以下错误:

Caused by: org.apache.commons.fileupload.MultipartStream$MalformedStreamException: Stream ended unexpectedly
at org.apache.commons.fileupload.MultipartStream$ItemInputStream.makeAvailable(MultipartStream.java:1005)
at org.apache.commons.fileupload.MultipartStream$ItemInputStream.read(MultipartStream.java:903)
at java.io.InputStream.read(InputStream.java:101)
at org.apache.commons.fileupload.util.Streams.copy(Streams.java:100)
at org.apache.commons.fileupload.util.Streams.copy(Streams.java:70)
at org.apache.commons.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:347)

但是,当我关闭 https 并通过 http 发出请求时,一切正常。有什么想法吗?

我现在正在测试一个非常简单的上传表单:

<form action="../upload/TestUpload"
enctype="multipart/form-data" method="post">
<p>
Please specify a file, or a set of files:<br>
<input type="file" name="datafile" size="40">
</p>
<div>
<input type="submit" value="Send">
</div>
</form>

spring 类现在非常简单 - 只需打印出文件名,什么都不做。然而,代码甚至没有达到这个 Action ,因为fileupload 无法解析流。

@RestController
public class Upload {
private static final Logger LOG = LogManager.getLogger(Upload.class);
@RequestMapping(value="/TestUpload", method=RequestMethod.POST)
public List<FileResult> handleFileUpload(MultipartHttpServletRequest request){
//List<File> tempFiles = new LinkedList<File>();
List<FileResult> files = new LinkedList<FileResult>();
Iterator<String> itr = request.getFileNames();
while (itr.hasNext()) {
MultipartFile multipartFile = request.getFile(itr.next());
LOG.info(multipartFile.getName());
}
return files;

}

web.xml https 片段

  <security-constraint>
<web-resource-collection>
<web-resource-name>securedapp</web-resource-name>
<url-pattern>/*</url-pattern>
<http-method>GET</http-method>
<http-method>POST</http-method>
<http-method>PUT</http-method>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>

最佳答案

我通过安装最新版本的 tomcat 8 和最新版本的 jdk 8 解决了这个问题。不确定之前的问题是什么,但可能是一些罕见的错误或配置错误导致了这个问题。

关于java - 无法将文件上传到启用 https 的 servlet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34274048/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com