程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> JSP編程 >> 關於JSP >> jsp中下載程序問題

jsp中下載程序問題

編輯:關於JSP


我下載了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:

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved