Java 当我在Servlet中调用getName()时,为什么在html中看到file标记的name属性?
这就是我的web.xml中的内容: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&
<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());
}