我下載了jsp(SUN企業級應用的首選)smartupload類,然後編寫了下載程序,如下:
<%@page contentType="text/html;charset=gb2312"%><%@page language="java" import="com.jsp(SUN企業級應用的首選)smart.upload.*"%><jsp(SUN企業級應用的首選):useBean id="mySmartUpload" scope="page" class="com.jsp(SUN企業級應用的首選)smart.upload.SmartUpload"/><%mySmartUpload.initialize(pageContext);
mySmartUpload.downloadFile("d:\111.txt";
%>
運行後,我txt文件中的內容就直接顯示在了頁面上,zip文件也同樣,只不過是亂碼,有什麼辦法不顯示而和一般的下載一樣呢?
eclipse 回復於:2002-10-18 10:54:22應該是SmartUpload類的問題,jsp(SUN企業級應用的首選)程序沒有問題,我感覺
huangmw 回復於:2002-10-18 11:27:17這個類是從www.jsp(SUN企業級應用的首選)smart.com站點下載的,不會他們編的類問題吧?
你能提供一個類似這種類給我嗎?謝謝了
eclipse 回復於:2002-10-18 12:11:30TestFileDownload.jsp(SUN企業級應用的首選)頁面的例子:
<%
// 得到文件名字和路徑
String filename = ”MengxianhuiDocTest.doc”;
String filepath = ”D:\”;
// 設置響應頭和下載保存的文件名
response.setContentType(”APPLICATION/OCTET-STREAM”);
response.setHeader(”Content-Disposition”,
”attachment; filename=”” + filename + ”””);
// 打開指定文件的流信息
java.io.FileInputStream fileInputStream =
new java.io.FileInputStream(filepath + filename);
// 寫出流信息
int i;
while ((i=fileInputStream.read()) != -1) {
out.write(i);
}
fileInputStream.close();
out.close();
%>
值得注意的是:在你要下載的文件內容裡,除了文件的內容之外,不應該再附加有其它任何的字符,包括空格和回車換行符。我們有時在編寫代碼的時候,為了使代碼清晰可讀,往往會添加一些空格、制表符或者回車換行符,這樣雖然看起來比較清晰,但有時可能會得不到正確的結果。比如:
<%@ page import=”java.io.*”
%> <jsp(SUN企業級應用的首選):useBean id=”MyBeanFromMengxianhui” scope=”page”
class=”com.Mengxianhui.DownloadBean” />
應該寫成這樣:
<%@ page import=”java.io.*”
%><jsp(SUN企業級應用的首選):useBean id=”MyBeanFromMengxianhui” scope=”page”
class=”com.Mengxianhui.DownloadBean” />
eclipse 回復於:2002-10-18 12:13:21請注意:APPLICATION/OCTET-STREAM是設置下載類型
要改成你實際的類型,如excel要寫成:application/vnd.ms-excel
eclipse 回復於:2002-10-18 12:17:39如果不用jsp(SUN企業級應用的首選)smart,你就需要了解浏覽器端的編碼方式,在傳到服務器端時你才能解碼。也才可以得到上傳文件的相關信息。看下面的代碼。
package mshtang.fileUpload;
import java.io.*;
/**一個存放文件信息的類,包括文件的名稱(String),
**字段名(String), Content-Type(String)和內容(byte[])
**還提供了一個直接將文件內容保存到一個文件的函數 void saveTo(File f)
**可以調用 類{@link ContentFactory}中的適當方法,生成該類的實例。
** @see ContentFactory
** @see ContentFactory#getFileParameter
** @see ContentFactory#getFileParameterValues
**/
public class FileHolder
{
String contentType;
byte[] buffer;
String fileName;
String parameterName;
FileHolder(byte[] buffer, String contentType, String fileName, String parameterName)
{
this.buffer = buffer;
this.contentType = contentType;
this.fileName = fileName;
this.parameterName = parameterName;
}
/**把文件的內容存到指定的文件中,
**<b>這個方法不會檢查這個文件是否可寫、是否已經存在。</b>
**@param file 目的文件
**@throws 在 I/O 操作中被拋出的 IOException
**/
public void saveTo(File file) throws IOException
{
BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(file));
out.write(buffer);
out.close();
}
/**把文件的內容存到指定的文件中,
**<b>這個方法不會檢查這個文件是否可寫、是否已經存在。</b>
**@param name 目的文件名
**@throws 在 I/O 操作中被拋出的 IOException
**/
public void saveTo(String name) throws IOException
{
saveTo(new File(name));
}
/**
**返回一個文件內容的字節數組
**@return 一個代表文件內容的字節數組
**/
public byte[] getBytes()
{
return buffer;
}
/**
**返回該文件在文件上載前在客戶端的名稱
**@return 該文件在文件上載前在客戶端的名稱
**/
public String getFileName()
{
return fileName;
}
/**
**返回該文件的 Content-Type
**@return 該文件的 Content-Type
**/
public String getContentType()
{
return contentType;
}
/**
**返回上載該文件時,Html 頁面窗體中 file 控件的 name 屬性
**@return 返回上載該文件時,Html 頁面窗體中 file 控件的 name 屬性
**/
public String getParameterName()
{
return parameterName;
}
}
eclipse 回復於:2002-10-18 12:22: