求大神帮忙,关于文件上传问题 本帖最后由 u010295565 于 2013-04-14 18:44:47 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 FileReader file = new FileReader(fileItem.getName());菜鸟有话说: 这个问题我有遇到过,服务器端得到fileItem的对象,但是该fileItem中封装的是客户端对应要下载的文件在客户端的路径,也就是在服务器端没有该路径的文件你要上传文件,应该在服务器端指定一个文件夹,将你要上传的文件上传到该文件夹下;因为fileItem中封装了文件流(fileItem.getInputStream()),那么,你只要在服务器端中的servlet中把这个流拿到后,把这个流直接写入服务器端刚才说的用于存放上传文件的文件夹中就行了;另外,fileItem.getName()中,获得了客户端文件的完整路径,你可以截取一下,把文件名截取下来,在服务器端保留这个上传的文件的文件名; 获取项目下路径是用request.getSession().getServletContext().getRealPath("/")这个方法的 InputStream is = fileItem.getInputStream();得到输入流了直接用输出流写到目标文件去啊。UploadFileItem 获取文件名那个获取的是你上传的文件的名字(火狐之类的浏览器只有文件名,IE会把全路径都上传上来),不是服务器的,服务器上面是个临时文件。 我这里其实主要是上传TXT中的数据到数据库,再对数据进行操作,所以不用写到目标文件中去~InputStream is = fileItem.getInputStream();得到这个输出流,如何进行提取?最好是一行一行的提取,因为里面的数据是以每行为单位,如用普通的流读取,那么不好掌控数据范围,我是想用BufferedReader的readLine()进行获取,但在 FileReader file = new FileReader(fileItem.getName());时报错,有人能给出详细点的代码吗?刚解除IO流,不是很熟悉,谢谢了~ BufferedReader br = new BufferedReader(new InputStreamReader( fileItem.getInputStream())); 正好我现在在做这个,首先,如果文件上传,你在本地测试是不规范的,也是不好的,因为你传递的是流。你应该这样,将文件写成一个二进制或者是base64的字符串,然后传递字符串,在服务器端,将字符串生成文件就可以了。而且一般,我们也都是传递到FTP服务器,如需要详细,可以回复 问题已解决,哎,白天上班不能上网,自己摸索出来了,回来才发现小绵羊童鞋已经给出答案了,不过还是谢谢了~结贴,给分ByteArrayInputStream bais = new ByteArrayInputStream(fileItem.getBytes());BufferedReader rd = new BufferedReader(new InputStreamReader(bais,"GBK")); fileItem.getName() 返回的不是文件路径+文件名 而单单是文件名 研磨设计模式 之 观察者模式(Observer) ——跟着cc学设计系列 Telnet服务器如何开发? tomcat下能否部署两个相同的SSH应用 如何实现https 使用Java开发桌面应用程序用什么技术框架好? Flex中如何给Accordion创建一个简单按钮作为其头部???? 自动组卷系统数据库设计问题 请教关于参数有效性验证和异常的困惑 恋爱技巧之追女孩子的心理和方法 jdbc版本 ibatis连接数据库找不到数据库驱动程序 小弟求救!!jsp网站,分页代码怎么写啊,对mysql不了解,求答案!!!
得到输入流了直接用输出流写到目标文件去啊。UploadFileItem 获取文件名那个获取的是你上传的文件的名字(火狐之类的浏览器只有文件名,IE会把全路径都上传上来),不是服务器的,服务器上面是个临时文件。
我这里其实主要是上传TXT中的数据到数据库,再对数据进行操作,所以不用写到目标文件中去~
InputStream is = fileItem.getInputStream();
得到这个输出流,如何进行提取?最好是一行一行的提取,因为里面的数据是以每行为单位,如用普通的流读取,那么不好掌控数据范围,我是想用BufferedReader的readLine()进行获取,但在 FileReader file = new FileReader(fileItem.getName());时报错,有人能给出详细点的代码吗?刚解除IO流,不是很熟悉,谢谢了~
结贴,给分ByteArrayInputStream bais = new ByteArrayInputStream(fileItem.getBytes());
BufferedReader rd = new BufferedReader(new InputStreamReader(bais,"GBK"));