jsp ftp 下载

网站方式上传下载分两种,一种是附件在本项目里,第二种是附件不再项目,在另外一台机器上;

第一种: 附件在本项目里:可以直接设置超链接的相对路径;

第二种:附件和应用不再同一台机器,通过ftp方式下载

如果想要点击下载,然后弹出一个下载对话框,页面又不会打开附件,这个需要在web.xml 中修改,设置mime-mapping,如下所示:

   <mime-mapping>  
       <extension>xlsx</extension>  
       <mime-type>application/msexcel</mime-type>  
   </mime-mapping>  
   <mime-mapping>  
        <extension>xls</extension>  
       <mime-type>application/msexcel</mime-type>  
   </mime-mapping>
然后设置一个超链接 <a href="fileListAction!download.do">下载</a></br>

接下来就是struts的action代码了:

 		HttpServletResponse response = ServletActionContext.getResponse();
		HttpServletRequest request = ServletActionContext.getRequest();
		String formno = request.getParameter("formno");
		String fileName = request.getParameter("name");
		FTPClient ftpClient = new FTPClient();
		OutputStream os =   response.getOutputStream();;
		String ip = DefaultSettings.get("ws.linktrust.nesafechekckin.ftpeurl");    
		int port = 21;
		String username = DefaultSettings.get("username");    
		String password = DefaultSettings.get("password");    
		String remotePath = DefaultSettings.get("ftpepath");    
		ftpClient.setControlEncoding("GBK");
		FTPClientConfig conf = new FTPClientConfig(FTPClientConfig.SYST_NT); 
		conf.setServerLanguageCode("zh");
		ftpClient.connect(ip, port);
		ftpClient.login(username, password);
		int reply = ftpClient.getReplyCode();
		boolean b = FTPReply.isPositiveCompletion(reply);
		if (!b) {
			throw new Exception("连接服务器失败");
		}
		boolean bf = ftpClient.changeWorkingDirectory(remotePath+formno);
		ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
		//此句代码尤为重要		
		response.setHeader("Content-disposition","attachment;filename="+ URLEncoder.encode(fileName, "utf-8"));
		ftpClient.retrieveFile(new String(fileName.getBytes("GBK"),"ISO-8859-1"), os);
		System.out.println("size:"+ os);
		os.flush();
		os.close();
		ftpClient.logout();
		return "download";
	
Struts配置文件:

    <action name="fileListAction" class="XXXXAction">
		<result name="fileinfo">/jsp/filelist.jsp</result>
		 <result name="download" type="stream"></result>
    </action>




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值