在java中,我用的链接下载,但怎样才能获得下载文件的路径? 我试了好多方法都不行,麻烦各位帮一下,谢谢~ 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 import java.io.*; import javax.servlet.ServletException; import javax.servlet.http.*; import javax.servlet.RequestDispatcher; import java.util.ResourceBundle; /** *用于下载文件的servlet *@vesion 1.0 */ public class DownloadFile extends HttpServlet { //字符编码 private final String ENCODING="GB2312"; //内容类型 private final String CONTENT_TYPE="text/html;charset=GB2312"; //要下载的文件存放的路径 private String downloadFileDir="download\\"; /** *执行HTTP get操作 * @param req 从用户来的请求 * @param resp servlet的回应 */ public void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException{ //设置request对象的字符编码 request.setCharacterEncoding(ENCODING); //从request 中取出要下载文件的名字 String fileName=request.getParameter("filename"); if(fileName==null || fileName.trim().equals("")){ //设置response对象ContentType response.setContentType(CONTENT_TYPE); //输出错误信息 PrintWriter out=response.getWriter(); out.println("<font color=red>输入的文件名无效!</font>"); out.close(); } else{ //下载文件的完整路径名 String fullFileName=downloadFileDir+fileName; System.out.println("下载文件:"+fullFileName); //根据文件的类型设置response对象ContentType String contentType =getServletContext().getMimeType(fullFileName); if(contentType==null) contentType="application/octet-stream"; response.setContentType(contentType); response.setHeader("content-disposition","attachment;filename=\""+fileName+"\""); InputStream is=null; OutputStream os=null; try{ is=new BufferedInputStream(new FileInputStream(fullFileName)); //定义输出字节流 java.io.ByteArrayOutputStream baos=new ByteArrayOutputStream(); //定义response的输出流 os =new BufferedOutputStream(response.getOutputStream()); //定义buffer byte[] buffer=new byte[4*1024];//4k Buffer int read =0; //从文件中读入数据并写到输出字节流中 while ((read=is.read(buffer))!=-1){ baos.write(buffer,0,read); } //将输出字节流写到response的输出流中 os.write(baos.toByteArray()); } catch (IOException e){ e.printStackTrace(); } finally{ //关闭输出字节流和response输出流 os.close(); is.close(); } } } public void doPost(HttpServletRequest req,HttpServletResponse resp) throws ServletException,IOException{ //调用doGet方法 doGet(req,resp); } } 下载文件的路径?要下载的文件在你的磁盘上啊?你自己都不知道吗?application.getRealPath(".") 可以拿到当前的绝对路径 我用的是另存为下载保存,在strust中想获得想获得下载文件的路径application.getRealPath(".") 对我似乎没用~ 应该是我没表达清楚,很抱歉!我用的链接下载,在strust中我想获得客户下载保存的路径,就是用户点击下载,在弹出的 另存为 对话框里选择了路径保存,我想获得的就是这个路径!我第一次弄这个,还想各位指教~ birt报表脚本数据源 在Java里调用sqlplus执行sql脚本的一些问题 数据库设计中问题 jms启动报错:java.lang.OutOfMemoryError hibernate问题 weblogic8控制台登陆后出现致命错误。帮忙解决高分相送! 一个使用javaMail发电子邮件的问题,希望各位大虾指教,先谢了! 初学j2ee有什么比较好的学习方法 start cloudview??????????????????? EXTJS 4 如何选择下个节点的第一片树叶 s:if 测试list是否为空 HIBERNATE多表查询
import javax.servlet.ServletException;
import javax.servlet.http.*;
import javax.servlet.RequestDispatcher;
import java.util.ResourceBundle;
/**
*用于下载文件的servlet
*@vesion 1.0
*/
public class DownloadFile extends HttpServlet {
//字符编码
private final String ENCODING="GB2312";
//内容类型
private final String CONTENT_TYPE="text/html;charset=GB2312";
//要下载的文件存放的路径
private String downloadFileDir="download\\";
/**
*执行HTTP get操作
* @param req 从用户来的请求
* @param resp servlet的回应
*/
public void doGet(HttpServletRequest request,HttpServletResponse response)
throws ServletException,IOException{
//设置request对象的字符编码
request.setCharacterEncoding(ENCODING);
//从request 中取出要下载文件的名字
String fileName=request.getParameter("filename");
if(fileName==null || fileName.trim().equals("")){
//设置response对象ContentType
response.setContentType(CONTENT_TYPE);
//输出错误信息
PrintWriter out=response.getWriter();
out.println("<font color=red>输入的文件名无效!</font>");
out.close();
}
else{
//下载文件的完整路径名
String fullFileName=downloadFileDir+fileName;
System.out.println("下载文件:"+fullFileName);
//根据文件的类型设置response对象ContentType
String contentType =getServletContext().getMimeType(fullFileName);
if(contentType==null)
contentType="application/octet-stream";
response.setContentType(contentType);
response.setHeader("content-disposition","attachment;filename=\""+fileName+"\"");
InputStream is=null;
OutputStream os=null;
try{
is=new BufferedInputStream(new FileInputStream(fullFileName));
//定义输出字节流
java.io.ByteArrayOutputStream baos=new ByteArrayOutputStream();
//定义response的输出流
os =new BufferedOutputStream(response.getOutputStream());
//定义buffer
byte[] buffer=new byte[4*1024];//4k Buffer
int read =0;
//从文件中读入数据并写到输出字节流中
while ((read=is.read(buffer))!=-1){
baos.write(buffer,0,read);
}
//将输出字节流写到response的输出流中
os.write(baos.toByteArray());
}
catch (IOException e){
e.printStackTrace();
}
finally{
//关闭输出字节流和response输出流
os.close();
is.close();
}
}
}
public void doPost(HttpServletRequest req,HttpServletResponse resp)
throws ServletException,IOException{
//调用doGet方法
doGet(req,resp);
}
}
要下载的文件在你的磁盘上啊?你自己都不知道吗?
application.getRealPath(".") 可以拿到当前的绝对路径
application.getRealPath(".") 对我似乎没用~
我用的链接下载,在strust中我想获得客户下载保存的路径,
就是用户点击下载,在弹出的 另存为 对话框里选择了路径保存,我想获得的就是这个路径!
我第一次弄这个,还想各位指教~