上传文件超过100 KB时出现500内部服务器错误

时间:2015-10-23 08:55:06

标签: javascript java html

的index.html

id="myFile" enclosed in div tag

<div id = "myFile">

</div>

controller.js

    $("#myFile").uploadFile({
        url:/Spot_audit/upload/"+id+"/"+year",
        fileName:$scope.myFile,
        allowedTypes: "zip,docx,xlsx,7z",
            maxFileSize:5*1024*1024
    });

controller.java

/*   file upload    */    

@RequestMapping(value="/upload/{Id}/{fy}", method=RequestMethod.POST)
public void handleFileUpload (@RequestParam("file") MultipartFile file, @PathVariable("fy") String year, @PathVariable("Id") String aid){                   
    if (!file.isEmpty()) {
        String path1="C:/Users/Downloads/"+month+"/"+aid+"/"+file.getOriginalFilename();

        Path path= Paths.get(path1);

        try{
                File newFile1 = new File(path);
            newFile1.getParentFile().mkdirs();
            newFile1.createNewFile();
            BufferedOutputStream os1 = new BufferedOutputStream(new FileOutputStream(newFile1));

            os1.write(file.getBytes(), 0, (int) file.getSize());
            os1.flush();
            os1.close();
        }catch(Exception e){
            e.printStackTrace();
            CompPath="";            
        }           
    }

    //return new ResponseEntity<String>(fullpath, HttpStatus.CREATED); 
}

}

1 个答案:

答案 0 :(得分:1)

由于只有大于100 KB的文件才会出现此问题,因此您的应用程序服务器会遇到限制。

通常会设置一个相当低的限制,以防止“恶意”用户上传文件太大。您必须提高此最大POST限制才能获得更大的文件。

设置取决于您使用的应用程序服务器/ servlet容器。

如果要直接在服务器设置中更改值,并且服务器是Tomcat,请查看此处: http://tomcat.apache.org/tomcat-8.0-doc/config/http.html

您可以在web.xml中定义相同的值:

<multipart-config>
    <location>/tmp</location>
    <max-file-size>20848820</max-file-size>
    <max-request-size>418018841</max-request-size>
    <file-size-threshold>1048576</file-size-threshold>
</multipart-config>

甚至可以从代码中提高值:

@MultipartConfig(location="/tmp", fileSizeThreshold=1024*1024, 
    maxFileSize=1024*1024*5, maxRequestSize=1024*1024*5*5)

(均来自https://docs.oracle.com/javaee/6/tutorial/doc/gmhal.html

如果您的代码基于Spring Boot,则可以选择另外一种方法,只需要在application.properties中设置配置值。此设置适用于所有containers supported的Spring Boot(Tomcat 7-8,Jetty 8-9,Undertow)

multipart.maxFileSize: 128KB
multipart.maxRequestSize: 128KB

(此时间取自https://spring.io/guides/gs/uploading-files/