哪位老大,用jsp帮我实现文件的更名下载 ( 积分: 100 )

  • 主题发起人 主题发起人 金鱼
  • 开始时间 开始时间

金鱼

Unregistered / Unconfirmed
GUEST, unregistred user!
比如,我在服务器上的文件是 “通知_200561032.doc”
下载的时候自动变成, “通知.doc”
 
比如,我在服务器上的文件是 “通知_200561032.doc”
下载的时候自动变成, “通知.doc”
 
download(hostfile,localfile)
 
呵呵,use UrlMon
UrlDownloadToFile(nil, Pchar(Source), Pchar(Dest), 0, nil);
 
TO:chengangsir,
TO:haofang
可以写详细一点吗?都用了哪些单元或包。
=========================================================================
我这边的情况是这样的。在上传文件时,是为了避免附件,重名覆盖的现象,我在上传时自动,给附件名加了一个尾巴 原文件名+"
_年月两位随机数"
,在下载的时候就需要自动把这个小尾巴去掉,还原成原来的文件名。上传改名,我已经作好了,就差下载时要给附件更名(去掉那个小尾巴)下载。
==========================================================================
可以写得详细一点吗?
 
你用的是那个包进行上穿的?
一般如果用的包都会有下载的功能
否则,你可以 用一个OutputStreamWriter来写,用response来设置头,写到客户端。
 
你可以用 jspsmart 组件来作。
看看这段代码,怎么样,
<%@ page contentType=&quot;text/html;charset=gb2312&quot;
import=&quot;com.jspsmart.upload.*,tools.*&quot;
errorPage=&quot;error.jsp&quot;%>
<%
String ggfj_source = request.getParameter(&quot;ggfj&quot;);
String path = request.getRealPath(&quot;/&quot;);
// 新建一个SmartUpload对象
SmartUpload su = new SmartUpload();
// 初始化
su.initialize(pageContext);
su.setContentDisposition(null);
String ggfj = path + ggfj_source;
String fileNm = ggfj_source.substring(ggfj_source.lastIndexOf(&quot;/&quot;) + 1,ggfj_source.length());
fileNm = OtherTools.deleteTail(fileNm);
fileNm = new String(fileNm.getBytes(&quot;gb2312&quot;), &quot;ISO8859_1&quot;);
// 下载文件
if(fileNm == null)
return;
su.downloadFile(ggfj,null,fileNm);
%>
 
这个应该可以[8D]
DownLoad.java
==============================================================
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
import tools.*;
/**
* <p>Title: </p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2005</p>
* <p>Company: </p>
* @author not attributable
* @version 1.0
*/
public classdo
wnLoad extends HttpServlet {
//Initialize global variables
public void init() throws ServletException {
}
//Process the HTTP Get request
public voiddo
Get(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String filename = request.getParameter(&quot;filename&quot;);
String filePath = request.getParameter(&quot;filePath&quot;);
try{
if(filename != null){
String path = request.getRealPath(&quot;/&quot;) + filePath + filename;
byte[] b = new byte[500];
File fileLoad = new File(path);
FileInputStream in = new FileInputStream(fileLoad);
response.setContentType(&quot;application/x-macbinary&quot;);
filename = new String(OtherTools.deleteTail(filename).getBytes(&quot;gb2312&quot;),&quot;ISO8859-1&quot;);
response.setHeader(&quot;Content-disposition&quot;,&quot;attachment;filename=&quot;+ filename);
response.setContentLength((int)fileLoad.length());
OutputStream o = response.getOutputStream();

int n=0;
while((n=in.read(b)) != -1){
o.write(b,0,n);

}
in.close();
}
}
catch(FileNotFoundException ex){
ex.printStackTrace();
}
}
//Process the HTTP Post request
public voiddo
Post(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
do
Get(request, response);
}
//Clean up resources
public void destroy() {
}

public static String toUtf8String(String s) {
StringBuffer sb = new StringBuffer();
for (int i=0;i<s.length();i++) {
char c = s.charAt(i);
if (c >= 0 &amp;&amp;
c <= 255) {
sb.append(c);
}
else
{
byte[] b;
try {
b = Character.toString(c).getBytes(&quot;utf-8&quot;);
}
catch (Exception ex) {
System.out.println(ex);
b = new byte[0];
}
for (int j = 0;
j < b.length;
j++) {
int k = b[j];
if (k < 0) k += 256;
sb.append(&quot;%&quot;
+ Integer.toHexString(k).
toUpperCase());
}
}
}
return sb.toString();
}
}
 
多人接受答案了。
 
后退
顶部