File upload 使用SPARK Framework上载大文件时,chrome上的错误连接中止

File upload 使用SPARK Framework上载大文件时,chrome上的错误连接中止,file-upload,jetty,embedded-jetty,spark-java,File Upload,Jetty,Embedded Jetty,Spark Java,我有下面的一段代码来处理Spark中的文件上传,它可以完美地处理低于极限的文件。现在,当我使用一个1GB的大文件时,在一些Jetty上,内部逻辑触发了中止浏览器连接而不提供响应错误代码。到目前为止,我在Chrome Developer工具的控制台中看到的是以下一行: POST网络::错误连接中止 以下是有关请求的一些详细信息: Request Headers Accept:application/json, text/javascript, */*; q=0.01 Content-Type:mu

我有下面的一段代码来处理Spark中的文件上传,它可以完美地处理低于极限的文件。现在,当我使用一个1GB的大文件时,在一些Jetty上,内部逻辑触发了中止浏览器连接而不提供响应错误代码。到目前为止,我在Chrome Developer工具的控制台中看到的是以下一行:

POST网络::错误连接中止

以下是有关请求的一些详细信息:

Request Headers
Accept:application/json, text/javascript, */*; q=0.01
Content-Type:multipart/form-data; boundary=----WebKitFormBoundarybo8RwdTiWU9T9m3q
Origin:http://localhost:8888
Referer:http://localhost:8888/index.html
User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36
X-Requested-With:XMLHttpRequest

Request Payload
------WebKitFormBoundarybo8RwdTiWU9T9m3q
Content-Disposition: form-data; name="files[]";     filename="some big file.mp4"
Content-Type: video/mp4


------WebKitFormBoundarybo8RwdTiWU9T9m3q--
下面是我使用的代码:

package examples.fileUploader;

import org.eclipse.jetty.util.URIUtil;
import spark.Spark;
import javax.servlet.MultipartConfigElement;
import javax.servlet.http.Part;
import java.io.InputStream;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Collection;

public final class test
{
    public static void main(final String... args)
    {
        Spark.port(8888);

        Spark.staticFileLocation("/examples/fileUploader/public/");
        Spark.staticFiles.externalLocation(URIUtil.addPaths(System.getProperty("user.dir"), "/src/main/java/examples/fileUploader/public"));

    Spark.get("/hello", (request, response) -> "Hello World!");


    Spark.post("/uploads",  "multipart/form-data", (request, response) -> {
        //- Servlet 3.x config
        String location =  URIUtil.addPaths(System.getProperty("user.dir"), "/tmp");  // the directory location where files will be stored
        long maxFileSize = 100000000;  // the maximum size allowed for uploaded files
        long maxRequestSize = 100000000;  // the maximum size allowed for multipart/form-data requests
        int fileSizeThreshold = 1024;  // the size threshold after which files will be written to disk
        MultipartConfigElement multipartConfigElement = new MultipartConfigElement(location, maxFileSize, maxRequestSize, fileSizeThreshold);
        request.raw().setAttribute("org.eclipse.jetty.multipartConfig", multipartConfigElement);
        //-/

        Collection<Part> parts = request.raw().getParts();
        for(Part part : parts) {
            System.out.println("Name:");
            System.out.println(part.getName());
            System.out.println("Size: ");
            System.out.println(part.getSize());
            System.out.println("Filename:");
            System.out.println(part.getSubmittedFileName());
        }

        String fName = request.raw().getPart("upfile").getSubmittedFileName();
        System.out.println("Title: "+request.raw().getParameter("title"));
        System.out.println("File: "+fName);

        Part uploadedFile = request.raw().getPart("upfile");
        Path out = Paths.get("/aaa/bbb/"+fName);
        try (final InputStream in = uploadedFile.getInputStream()) {
            Files.copy(in, out);
            uploadedFile.delete();
        }
        // cleanup
        multipartConfigElement = null;
        parts = null;
        uploadedFile = null;

        return "OK";
    });
}
}
enter code here
package examples.fileUploader;
导入org.eclipse.jetty.util.URIUtil;
进口火花,火花;
导入javax.servlet.MultipartConfigElement;
导入javax.servlet.http.Part;
导入java.io.InputStream;
导入java.nio.file.Files;
导入java.nio.file.Path;
导入java.nio.file.path;
导入java.util.Collection;
公开期末考试
{
公共静态void main(最终字符串…参数)
{
火花口(8888);
Spark.staticFileLocation(“/examples/fileUploader/public/”);
externalLocation(URIUtil.addpath(System.getProperty(“user.dir”),“/src/main/java/examples/fileUploader/public”);
获取(“/hello”,(请求,响应)->“helloworld!”);
Spark.post(“/uploads”,“多部分/表单数据”,(请求,响应)->{
//-Servlet 3.x配置
String location=URIUtil.addpath(System.getProperty(“user.dir”),“/tmp”);//存储文件的目录位置
long maxFileSize=100000000;//上载文件允许的最大大小
long maxRequestSize=100000000;//多部分/表单数据请求允许的最大大小
int fileSizeThreshold=1024;//文件写入磁盘后的大小阈值
MultipartConfigElement MultipartConfigElement=新的MultipartConfigElement(位置、maxFileSize、maxRequestSize、fileSizeThreshold);
request.raw().setAttribute(“org.eclipse.jetty.multipartConfig”,multipartConfigElement);
//-/
集合部件=request.raw().getParts();
用于(零件:零件){
System.out.println(“名称:”);
System.out.println(part.getName());
System.out.println(“大小:”);
System.out.println(part.getSize());
System.out.println(“文件名:”);
System.out.println(part.getSubmittedFileName());
}
字符串fName=request.raw().getPart(“upfile”).getSubmittedFileName();
System.out.println(“Title:+request.raw().getParameter”(“Title”);
System.out.println(“文件:+fName”);
Part uploadedFile=request.raw().getPart(“upfile”);
Path out=Path.get(“/aaa/bbb/”+fName);
try(final InputStream in=uploadedFile.getInputStream()){
文件。复制(输入、输出);
uploadedFile.delete();
}
//清理
multipartConfigElement=null;
parts=null;
uploadedFile=null;
返回“OK”;
});
}
}
在这里输入代码
还有我对Spark的pom依赖

<dependency>
<groupId>com.sparkjava</groupId>
<artifactId>spark-core</artifactId>
<version>2.5.3</version>
</dependency>

com.sparkjava
火花芯
2.5.3

需要更多关于“Jetty内部逻辑触发中止浏览器连接”的详细信息。可能是日志吗?嗨@JoakimErdfelt我已经创建了一个github repo,因此您可以查看示例并使用它,下面是链接