Java 当我在Servlet中调用getName()时,为什么在html中看到file标记的name属性?

Java 当我在Servlet中调用getName()时,为什么在html中看到file标记的name属性?,java,servlets,Java,Servlets,这就是我的web.xml中的内容: <servlet> <servlet-name>UploadFileServlet</servlet-name> <servlet-class>com.tugay.julyseventeen.UploadFileServlet</servlet-class> <multipart-config> <max-file-size>20000&

这就是我的web.xml中的内容:

<servlet>
    <servlet-name>UploadFileServlet</servlet-name>
    <servlet-class>com.tugay.julyseventeen.UploadFileServlet</servlet-class>
    <multipart-config>
        <max-file-size>20000</max-file-size>
        <file-size-threshold>20000</file-size-threshold>
    </multipart-config>
</servlet>

<servlet-mapping>
    <servlet-name>UploadFileServlet</servlet-name>
    <url-pattern>/uploadFile</url-pattern>
</servlet-mapping>
所以这里file.getName()将返回我不喜欢的“xxx”。我想获取正在上载的文件的名称。我该怎么做?

使用Apache提供的功能,可以轻松地向servlet和web应用程序添加健壮、高性能的文件上载功能

示例代码:

 List<FileItem> multiparts = new ServletFileUpload(
                            new DiskFileItemFactory()).parseRequest(request);

 for(FileItem item : multiparts){
    if(!item.isFormField()){
        String name = new File(item.getName()).getName();

    }
 }
List multiparts=new ServletFileUpload(
新建DiskFileItemFactory()).parseRequest(请求);
用于(文件项:多部分){
如果(!item.isFormField()){
字符串名称=新文件(item.getName()).getName();
}
}

找到完整的代码,

我最近使用一个多部分文件做了一些非常类似的事情,并使用ajax发布到我的控制器

表格:

控制器:

@ResponseBody
@ResponseStatus(HttpStatus.OK)
@RequestMapping(value = "/upload", method = RequestMethod.POST)
public String upload(@RequestBody MultipartFile file) {
    System.out.println("Uploaded - " + file.getOriginalFilename());
}
这将为您提供您要查找的文件名


我不知道你是否在使用SpringMVC,但如果你在使用,我就是这么做的。您需要为多部分文件导入org.springframework.web.multipart.MultipartFile。

自Servlet API 3.1以来,
部分提供了满足您需要的方法

获取客户端指定的文件名

 List<FileItem> multiparts = new ServletFileUpload(
                            new DiskFileItemFactory()).parseRequest(request);

 for(FileItem item : multiparts){
    if(!item.isFormField()){
        String name = new File(item.getName()).getName();

    }
 }
<form enctype="multipart/form-data" id="inputForm">
    <input id="file" type="file" name="file" />
</form>

<input onclick="Javascript: upload()" type="submit" value="Upload" />
function upload() {
    var data = new FormData($('#inputForm')[0]);
    $.ajax({
        type : 'POST',
        url : 'upload',
        data : data,
        cashe : false,
        contentType : false,
        processData : false,
        success : function(response) {
           alert(response);
        },
        error : function() {
           alert("Didn't work");
        }
    });
}
@ResponseBody
@ResponseStatus(HttpStatus.OK)
@RequestMapping(value = "/upload", method = RequestMethod.POST)
public String upload(@RequestBody MultipartFile file) {
    System.out.println("Uploaded - " + file.getOriginalFilename());
}