apache java下载文件,要下载服务器上的文件,下载应该如何写

当前位置:我的异常网» Java Web开发 » 要下载服务器上的文件,下载应该如何写

要下载服务器上的文件,下载应该如何写

www.myexceptions.net  网友分享于:2015-08-26  浏览:48次

要下载服务器上的文件,下载应该怎么写

测试界面:

请输入路径:请输入文件名:

MyJsp.jsp下载页面:

String filenamedownload = request.getParameter("path"); //即将下载的文件的相对路径

String filenamedisplay = request.getParameter("name"); //下载文件时显示的文件保存名称

response.setContentType("application/x-download");//设置为下载application/x-download

filenamedisplay = URLEncoder.encode(filenamedisplay,"UTF-8");

response.addHeader("Content-Disposition", "attachment; filename=\"" + filenamedisplay + "\"");

try

{

RequestDispatcher dispatcher = application.getRequestDispatcher(filenamedownload);

if(dispatcher != null)

{

dispatcher.forward(request,response);

}

response.flushBuffer();

}

catch(Exception e)

{

e.printStackTrace();

}

finally

{

}

%>

我输入路径为:D:\Tomcat 6.0\webapps\travel\file\b.txt

保存的文件名:a.txt

可是出错了

出错信息是:

java.lang.IllegalArgumentException: Path \Tomcat 6.0\webapps\travel\file\b.txt does not start with a "/" character

at org.apache.catalina.core.ApplicationContext.getRequestDispatcher(ApplicationContext.java:370)

at org.apache.catalina.core.ApplicationContextFacade.getRequestDispatcher(ApplicationContextFacade.java:196)

at org.apache.jsp.MyJsp_jsp._jspService(MyJsp_jsp.java:104)

at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)

at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)

at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)

at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)

at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)

at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)

at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)

at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)

at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)

at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)

文章评论

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用 Apache Commons Net 库来实现FTP文件下载。以下是一个简单的示例代码,仅供参考: ```java import org.apache.commons.net.ftp.FTP; import org.apache.commons.net.ftp.FTPClient; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; public class FTPDownloadExample { public static void main(String[] args) { String server = "ftp.example.com"; int port = 21; String user = "username"; String password = "password"; String remoteFilePath = "/path/to/file.txt"; String localFilePath = "/path/to/save/file.txt"; FTPClient ftpClient = new FTPClient(); try { ftpClient.connect(server, port); ftpClient.login(user, password); ftpClient.enterLocalPassiveMode(); ftpClient.setFileType(FTP.BINARY_FILE_TYPE); OutputStream outputStream = new FileOutputStream(localFilePath); boolean success = ftpClient.retrieveFile(remoteFilePath, outputStream); outputStream.close(); if (success) { System.out.println("File downloaded successfully."); } else { System.out.println("Failed to download file."); } } catch (IOException e) { e.printStackTrace(); } finally { try { if (ftpClient.isConnected()) { ftpClient.logout(); ftpClient.disconnect(); } } catch (IOException e) { e.printStackTrace(); } } } } ``` 在本示例中,我们使用 `FTPClient` 连接到FTP服务器,登录并进入被动模式。然后,我们将文件类型设置为二进制,从远程FTP服务器下载文件,将其保存到本地文件系统上,最后关闭连接。请注意,如果文件下载成功,`retrieveFile` 方法将返回 `true`,否则返回 `false`。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值