java文件上传时提示(文件名,目录名或卷标语法不正确)
代码功能:在网页有一个添加商品的共能,把商品的内容填完之后,能插到数据库中,但是有一个文件上传的功能,,老是过不去,,求助啊!!!!!提交结果:java.io.FileN...
代码功能: 在网页有一个添加商品的共能,把商品的内容填完之后,能插到数据库中,但是有一个文件上传的功能,,老是过不去,,求助啊!!!!!
提交结果:java.io.FileNotFoundException: E:\tomacat\apache-tomcat-6.0.36\webapps\Estore\WEB-INF\upload\a\e\2\2\f\f\8\4\0fd069ee-3573-4ffa-a845-1be1c6b82d5c_C:\Users\lenovo\Desktop\estore系统素材\image\1.jpg (文件名、目录名或卷标语法不正确。)
代码如下:
ProdService service = BasicFactory.getFactory().getInstance(ProdService.class); try {
String encode = this.getServletContext().getInitParameter("encode");
//前置定义一个map;
MapparamMap = new HashMap();
//1.上传图片
代码省略
Listlist = fileUpload.parseRequest(request);
for(FileItem item : list){
if(item.isFormField()){
String name = item.getFieldName();
String value = item.getString(encode);
paramMap.put(name, value); }else{
String realname = item.getName();
String uuidname = UUID.randomUUID().toString()+"_"+realname;
String hash = Integer.toHexString(uuidname.hashCode());
String upload = this.getServletContext().getRealPath("WEB-INF/upload");
String imgurl = "/WEB-INF/upload";
for(char c : hash.toCharArray()){
upload+="/"+c;
imgurl+="/"+c; }
imgurl +="/"+uuidname;
paramMap.put("imgurl", imgurl);
File uploadFile = new File(upload);
if(!uploadFile.exists())
uploadFile.mkdirs();
InputStream in = item.getInputStream();
//87行过不去!
OutputStream out = new FileOutputStream(new File(upload,uuidname));
//流对接
IOUtils.In2Out(in, out);
IOUtils.close(in, out); 展开
提交结果:java.io.FileNotFoundException: E:\tomacat\apache-tomcat-6.0.36\webapps\Estore\WEB-INF\upload\a\e\2\2\f\f\8\4\0fd069ee-3573-4ffa-a845-1be1c6b82d5c_C:\Users\lenovo\Desktop\estore系统素材\image\1.jpg (文件名、目录名或卷标语法不正确。)
代码如下:
ProdService service = BasicFactory.getFactory().getInstance(ProdService.class); try {
String encode = this.getServletContext().getInitParameter("encode");
//前置定义一个map;
MapparamMap = new HashMap();
//1.上传图片
代码省略
Listlist = fileUpload.parseRequest(request);
for(FileItem item : list){
if(item.isFormField()){
String name = item.getFieldName();
String value = item.getString(encode);
paramMap.put(name, value); }else{
String realname = item.getName();
String uuidname = UUID.randomUUID().toString()+"_"+realname;
String hash = Integer.toHexString(uuidname.hashCode());
String upload = this.getServletContext().getRealPath("WEB-INF/upload");
String imgurl = "/WEB-INF/upload";
for(char c : hash.toCharArray()){
upload+="/"+c;
imgurl+="/"+c; }
imgurl +="/"+uuidname;
paramMap.put("imgurl", imgurl);
File uploadFile = new File(upload);
if(!uploadFile.exists())
uploadFile.mkdirs();
InputStream in = item.getInputStream();
//87行过不去!
OutputStream out = new FileOutputStream(new File(upload,uuidname));
//流对接
IOUtils.In2Out(in, out);
IOUtils.close(in, out); 展开
2个回答
展开全部
java文件上传过程的时候有中文就很出现乱码,通常获取到的文件中通常都是“iso8859-1”格式,需要转换为“UTF-8”格式。
如:String str = new String(str.getByte("iso8859-1"),"UTF-8");进行下强制转换后在进行读取即可。
备注:上面str就是文件路径和对应的名称,通常格式有GBK、UTf-8、iso8859-1、GB2312,如果上面的强制转换不成功,依次进行这些格式的尝试,肯定是可以解决问题的。
如:String str = new String(str.getByte("iso8859-1"),"UTF-8");进行下强制转换后在进行读取即可。
备注:上面str就是文件路径和对应的名称,通常格式有GBK、UTf-8、iso8859-1、GB2312,如果上面的强制转换不成功,依次进行这些格式的尝试,肯定是可以解决问题的。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询