问题描述
在前台传入一个file表单,在后台生成了.tmp的临时文件,如何获取这个文件的真实格式,坐等大神解答
解决方案
解决方案二:
文件名不是传过去了么,直接截取看后缀
解决方案三:
传入一个file表单,是文件上传吗?servlet3.0文件上传的文件真实名称获取,part为上传的文件privateStringgetFileName(Partpart){StringcontentDispositionHeader=part.getHeader("content-disposition");String[]elements=contentDispositionHeader.split(";");for(Stringelement:elements){if(element.trim().startsWith("filename")){returnelement.substring(element.indexOf('=')+1).trim().replace(""","");}}returnnull;}
解决方案四:
文件通过表单提交传过去的是.tmp格式的临时文件.真实文件名就是不知道怎么获取
解决方案五:
没有用servlet,是用的ssh框架
解决方案六:
引用4楼u010762551的回复:
没有用servlet,是用的ssh框架
ssh框架中看看文件上传的时候使用的是什么技术,其实都差不多的找到获取文件上传流的地方,将这个拿到的流文件做处理拿到具体的文件名称,然后将文件再另存到自己指定的地方。servlet文件上传的后台文件获取方法,供楼主参考Partpart=request.getPart("filename");//part为上传的文件InputStreamis=part.getInputStream();//获取文件输入流//获取文件名privateStringgetFileName(Partpart){StringcontentDispositionHeader=part.getHeader("content-disposition");String[]elements=contentDispositionHeader.split(";");for(Stringelement:elements){if(element.trim().startsWith("filename")){returnelement.substring(element.indexOf('=')+1).trim().replace(""","");}}returnnull;}//文件另存FileOutputStreamfos=newFileOutputStream("d:\file\picture\"+fileName);byte[]buf=newbyte[1024];while(is.read(buf)!=-1){fos.write(buf);}fos.flush();fos.close();is.close();
解决方案七:
Part是引用哪的包哦??
解决方案八:
servlet3.0的新特性。引用6楼u010762551的回复:
Part是引用哪的包哦??
楼主可以参考commons-fileupload的文件上传servlet3.0的文件上传实际是对commons-fileupload的文件上传做了进一步的封装,使用起来更简便了
解决方案九:
filename.endWith(".你的文件格式")//这个不可以?
解决方案十:
http://yunnanwcj.blog.163.com/这是我的个人博客整理的一些各种编程的学习笔记大家可以看看都是很大Java和各种编程语言的学习资料互相多多交流多多指点不喜勿喷谢谢