自我反省——文件上传(很奇怪的问题)

学习文件上传的这几天,遇到一个自己无法解决的粗心问题。
开始一直以为是IDE版本的不同,经过多次的练习,问题还是存在,只不过慢慢忽略了。今天拿出源码运行后,看见没有自身的问题,多次比对后发现自己将form中:
<input type="submit" value="提交" />
写成了:
<input type="submit" name="提交" />
出现的错误:
在提交多个文件的测试中,服务器端总比提交的个数多一个,以下是调试时提交上的文件列表信息
name=IMG_1919(完).JPG, 
StoreLocation=f:\temp\upload__7cf729e9_16126022bd2__7ff8_00000000.tmp, 
size=1784923bytes,
isFormField=false, 
FieldName=attachment1, 

name=IMG_1920(完).JPG, 
StoreLocation=f:\temp\upload__7cf729e9_16126022bd2__7ff8_00000001.tmp, 
size=1671726bytes, 
isFormField=false, 
FieldName=attachment2, 

name=IMG_1921(完).JPG, 
StoreLocation=f:\temp\upload__7cf729e9_16126022bd2__7ff8_00000002.tmp, 
size=1517700bytes, 
isFormField=false, 
FieldName=attachment3, 

name=null, 
StoreLocation=f:\temp\upload__7cf729e9_16126022bd2__7ff8_00000003.tmp, 
size=6bytes, 
isFormField=true, // 百度知道:就是判断一个参数域是普通的表单输入域,还是文件上传域,如果该方法返回真的话,则是前者,如果为假,则是后者。是后者的情况下,就要对相应的域做相应的文件上传处理。
FieldName=提交, 
自我认知(若有不对,请指出):
应该是表单提交时,将type=“submit”中的name当成是一个提交的内容,并且submit默认value为【提交】。然后在文件解析中name这个提交的也被解析成为一个文件
DiskFileItemFactory factory = new DiskFileItemFactory(10*1024, new File("f:/temp"));
ServletFileUpload upload = new ServletFileUpload(factory);
//注意:通过设置文件头编码格式来解决文件名称中文乱码问题
upload.setHeaderEncoding("utf-8");      
// 解析
List<FileItem> list = upload.parseRequest(request);
以上就是个人见解,若有不足,欢迎指出,谢谢!

猜你喜欢

转载自blog.csdn.net/m0_37461645/article/details/79158193