菜鸟问题,文件上传到服务器 action怎么可能调用本地程序?你服务器装在你机器上的吧,所以以为是本地生成的吧? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 liang8305 你好,这么说吧,现在生成的文件在tomcat的bin目录下,而我的结果页面要调用这个文件,怎么办? 你这个程序产生了一些txt文件,位置在我的D盘,把那个路径作为参数传到页面上,然后页面把那个路径又作为参数放到url里面<a href="getFile.do?filePath=D:\\a.txt">文件a.txt</a> 即下载页面你getFile.do对应的后台处理程序 再用JAVA里的文件流读取文件,如FileInputStream读出来后再放到response输出流里面,具体代码如下:ServletOutputStream out = null;FileInputStream in = null;try { if(null!=path&&0<path.length()){in = new FileInputStream(dir+path); if(null!=in){ byte[] photo = new byte[in.available()]; in.read(photo); out = response.getOutputStream(); out.write(photo); }}} catch (IOException e) {} finally{ if(null!=in){ in.close(); } if(null!=out){ out.close(); }} allan0527 你好,我的action结束后生成了这些文件,要在页面里读,其实我可以直接在<a href="path" />里写上具体的本地地址,但这样我觉得可移植性太差,希望把这些文件上传到服务器后再用页面访问。也就是说我在action里传的path是工程目录的相对地址,而不是具体的本地文件夹地址。 相对路径,绝对路径可以是一样,只是参数的具体值的区别而已。“要在页面里读,其实我可以直接在 <a href="path" /> 里写上具体的本地地址,”这个是不行的,因为前面说了是用action结束后生成了这些文件,所以文件生成后是在服务器的D盘(假如保存在D盘根目录),<a href="D:\\a.txt" />这个肯定访问不了的,因为你发布只是项目资源而已,不是整个服务器的资源,所以你的<a href="path" /> path只能是项目内的资源另外,在action里面用servlet.getServletContext().getRealPath("/")可以得到工程目录的路径 你action生成的时候为什么不指定一个文件夹存放呢?另外,一定要存放到webroot里面的一个文件夹中,例如mytxt里面这样你的<a href="mytxt/XXX.txt" /> 就可以了 File txt=new File(servlet.getServletContext().getRealPath("/")+"文件夹名/文件名.txt");就可以保存到指定文件夹了 写个servlet访问文件,把文件作数据流输出就行了。 bs架构,使用java开发的系统可以在浏览器关闭的情况下给出消息提示吗? 关于jdbc PreparedStatement的用法 初学工作流,最好学什么 struts2,hibernate,spring 的版本 调用JS 请问有没有java调用php写的web service的实例? struts中关于action类中的一个方法问题。 Window 2000Server 环境下配置了TOMCAT的环境变量为什么样还是不行? WEBLOGIC7的怪问题呀。。。十万火急呀。 weblogic或EJB高手有没有啊? 求助!如何在tomacat下运行servlet? 如何去掉访问路径的前缀
然后页面把那个路径又作为参数放到url里面
<a href="getFile.do?filePath=D:\\a.txt">文件a.txt</a> 即下载页面
你getFile.do对应的后台处理程序 再用JAVA里的文件流读取文件,如FileInputStream
读出来后再放到response输出流里面,具体代码如下:
ServletOutputStream out = null;
FileInputStream in = null;
try {
if(null!=path&&0<path.length()){
in = new FileInputStream(dir+path);
if(null!=in){
byte[] photo = new byte[in.available()];
in.read(photo);
out = response.getOutputStream();
out.write(photo);
}
}
} catch (IOException e) {}
finally{
if(null!=in){
in.close();
}
if(null!=out){
out.close();
}
}
这个是不行的,因为前面说了是用action结束后生成了这些文件,所以文件生成后是在服务器的D盘(假如保存在D盘根目录),<a href="D:\\a.txt" />这个肯定访问不了的,因为你发布只是项目资源而已,不是整个服务器的资源,所以你的<a href="path" /> path只能是项目内的资源
另外,在action里面用servlet.getServletContext().getRealPath("/")可以得到工程目录的路径