关于上传文件时遇到的困难..
上传文件用servlet上传,通过表单的enctype="multipart/form-data"
也用iframe显示进度条,但是有“游戏文件名”这个输入框就报错,而且上传不了文件,把这个输入框去掉后才能上传文件,这是什么原因?
望大家指点一二...
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
引用来自“梅公子”的答案
是不是你俩文本框ID取一样了?
ServletFileUpload servletFileUpload = new ServletFileUpload(new DiskFileItemFactory());
List list = null;
try {
list = servletFileUpload.parseRequest(request);
System.out.println("333333333333##list:"+list);
} catch (FileUploadException e) {
e.printStackTrace();
}
for(Iterator iter = list.iterator(); iter.hasNext();){
//得到文件对象
FileItem fileItem = (FileItem)iter.next();
//是表单才进行处理
if(fileItem.isFormField()){
break;
}
//同意linux和windows的路径分隔符
String name = fileItem.getName().replaceAll("/", "\");
//得到文件名
int index = name.lastIndexOf("\");
String fileFileName = "";
// fileFileName=request.getParameter("g_gamename");
// System.out.println("jklllllllllllllllll"+fileFileName);
if(index == -1){
fileFileName = name;
}else{
fileFileName = name.substring(index + 1);
}
InputStream fileInputStream = fileItem.getInputStream();
String path = request.getRealPath("/")+"/upload";
//路径转换标准格式
File news = new File(path);
String new_path = news.getCanonicalPath();
//********获取路径后给页面传送**********
request.getSession().setAttribute("path", new_path);
System.out.println("3333path:"+new_path);
//也可不用自己写实现方法直接使用,fileItem.write(uploadFile);
File uploadFile = new File(new_path,fileFileName);
//首先要确认路径是否存在
uploadFile.getParentFile().mkdirs();
//检查文件是否已经存在
if(!uploadFile.exists()){
//建立文件
uploadFile.createNewFile();
}
FileOutputStream out2 = new FileOutputStream(uploadFile);
//开始copy文件
@SuppressWarnings("unused")
int len = 0;//每次读取的字节数
byte[] bytes = new byte[1024];
while((len = fileInputStream.read(bytes, 0, bytes.length)) != -1){
out2.write(bytes);
}
out2.flush();
out2.close();
fileInputStream.close();
}
out.flush();
out.close();
}
333333333333##list:[name=null, StoreLocation=C:tomcat-6.01tempupload_f37755d_13598e740a0__8000_00000000.tmp, size=3bytes, isFormField=true, FieldName=g_gamename, name=C:Documents and SettingsAdministrator妗岄潰oracle (+)鐢ㄦ硶.txt, StoreLocation=C:tomcat-6.01tempupload_f37755d_13598e740a0__8000_00000001.tmp, size=3519bytes, isFormField=false, FieldName=g_packagepath]
上面那个红色的打印下面这个红色的结果。name=null
若是没有那个文本框就不报错,可以上传文件。
是不是你俩文本框ID取一样了?
报什么错?