亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JSP > 正文

jsp實現文件上傳下載的程序示例

2020-07-27 21:35:31
字體:
來源:轉載
供稿:網友

一、文件上傳
上傳文件是Web開發中經常要用到的功能:例如在基于B/S的人事信息管理系統中上傳照片,在新聞發布系統中上傳圖片等等。。。。。要實現文件上傳功能,就需要綜合利用java中的文件輸入和輸出相關的類。
在TCP/IP中,最早出現的文件上傳機制是FTP。它是將文件由客服端發送到服務器的標準機制,能夠考慮到跨平臺的文本和二進制格式文件。但是在jsp編程中不能使用FTP方法來上傳文件,這是由jsp 運行機制所決定的。
下面是上傳文件的jsp頁面:

復制代碼 代碼如下:

<form action="file?file=upload" method="post" enctype="multipart/form-data">
    請選擇你要上傳的文件:<input type="file" name="upload" siez="16"><br>
    <input type="submit" value="提交">
  </form>

對于文件上傳表單處理其中method必須為post,也要增加類型enctype="multipart/form-data"。這樣就可以把文件中的數據作為流式數據上傳。當然無論是什么文件格式,均可以。。。
下面是servlet 處理程序:

復制代碼 代碼如下:

//接收上傳文件內容中臨時文件的文件名
        String tempFileName = new String("tempFileName");
        //tempfile 對象指向臨時文件
        File tempFile = new File("D:/"+tempFileName);
        //outputfile 文件輸出流指向這個臨時文件
        FileOutputStream outputStream = new FileOutputStream(tempFile);
        //得到客服端提交的所有數據
        InputStream fileSourcel = request.getInputStream();
        //將得到的客服端數據寫入臨時文件
        byte b[] = new byte[1000];
        int n ;
        while ((n=fileSourcel.read(b))!=-1){
            outputStream.write(b,0,n);
        }

        //關閉輸出流和輸入流
        outputStream.close();
        fileSourcel.close();

        //randomFile對象指向臨時文件
        RandomAccessFile randomFile = new RandomAccessFile(tempFile,"r");
        //讀取臨時文件的第一行數據
        randomFile.readLine();
        //讀取臨時文件的第二行數據,這行數據中包含了文件的路徑和文件名
        String filePath = randomFile.readLine();
        //得到文件名
        int position = filePath.lastIndexOf('//');
        CodeToString codeToString = new CodeToString();
        String filename = codeToString.codeString(filePath.substring(position,filePath.length()-1));
        //重新定位讀取文件指針到文件頭
        randomFile.seek(0);
        //得到第四行回車符的位置,這是上傳文件數據的開始位置
        long  forthEnterPosition = 0;
        int forth = 1;
        while((n=randomFile.readByte())!=-1&&(forth<=4)){
            if(n=='/n'){
                forthEnterPosition = randomFile.getFilePointer();
                forth++;
            }
        }

        //生成上傳文件的目錄
        File fileupLoad = new File("D:/work space/JSP workspace/jsp_servlet_upAndLoad/file","upLoad");
        fileupLoad.mkdir();
        //saveFile 對象指向要保存的文件
        File saveFile = new File("D:/work space/JSP workspace/jsp_servlet_upAndLoad/file/upLoad",filename);
        RandomAccessFile randomAccessFile = new RandomAccessFile(saveFile,"rw");
        //找到上傳文件數據的結束位置,即倒數第四行
        randomFile.seek(randomFile.length());
        long endPosition = randomFile.getFilePointer();
        int j = 1;
        while((endPosition>=0)&&(j<=4)){
            endPosition--;
            randomFile.seek(endPosition);
            if(randomFile.readByte()=='/n'){
                j++;
            }
        }

        //從上傳文件數據的開始位置到結束位置,把數據寫入到要保存的文件中
        randomFile.seek(forthEnterPosition);
        long startPoint = randomFile.getFilePointer();
        while(startPoint<endPosition){
            randomAccessFile.write(randomFile.readByte());
            startPoint = randomFile.getFilePointer();
        }
        //關閉文件輸入、輸出
        randomAccessFile.close();
        randomFile.close();
        tempFile.delete();

其中CodeToString()方法是一個中文字符處理的方法。如果文件不進行編碼轉換,則上傳后的文件名將會是亂碼,接收的文件數據也會是亂碼:
下面是CodeToString()源代碼:

復制代碼 代碼如下:

//處理中文字符串的函數
    public String codeString(String str){
        String s = str;
        try {
            byte[] temp = s.getBytes("utf-8");
            s = new String(temp);
            return s ;
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
            return s;
        }
    }

二:文件下載

實現文件下載的最簡單的方法就是使用超鏈接。假設在服務器上web目錄下地upload子目錄存在user.doc這個文檔。如:
<a href="http://localhost:8080/upload/user.doc">下載user.doc</a>
當單擊這個超級鏈接時,將會在瀏覽器中直接打開這個文檔,就像是把word軟件嵌入在瀏覽器中一樣。
打開文檔后就可以實現另存為了。當然在web上,最常見的方式是單擊鏈接后,出現“另存為”對話框:

復制代碼 代碼如下:

//獲取要下載的文件名
        String filename = request.getParameter("name");
        //得到想客服端輸出的輸出流
        OutputStream outputStream = response.getOutputStream();
        //輸出文件用的字節數組,每次向輸出流發送600個字節
        byte b[] = new byte[600];
        //要下載的文件
        File fileload = new File("D:/work space/JSP workspace/jsp_servlet_upAndLoad/file/upLoad",filename);       
        //客服端使用保存文件的對話框
        response.setHeader("Content-disposition", "attachment;filename="+filename);
        //通知客服文件的MIME類型
        response.setContentType("application/msword");
        //通知客服文件的長度
        long fileLength = fileload.length();
        String length = String.valueOf(fileLength);
        response.setHeader("Content_length", length);
        //讀取文件,并發送給客服端下載
        FileInputStream inputStream = new FileInputStream(fileload);
        int n = 0;
        while((n=inputStream.read(b))!=-1){
            outputStream.write(b,0,n);
        }

在該程序中,response對象的setContentType()用來定義服務器發送給客服端內容的MIME類型。這里對MIME就不特別介紹了。事實上,凡是瀏覽器能處理的所有資源都有對應的MIME資源類型。在與服務器的交互中,瀏覽器就是對html、jsp等文件瀏覽器直接將其打開。對于word、excel等瀏覽器自身不能打開的文件則調用相應的方法。對于沒有標記MIME類型的文件。瀏覽器則根據其擴展名和文件內容猜測其類型。。。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲视频在线免费观看| 成人激情视频小说免费下载| 亚洲精品成人久久电影| 国产精品青青在线观看爽香蕉| 在线播放国产精品| 久久99视频免费| 91av视频在线播放| 欧美一区二区三区免费观看| 亚洲国产精品久久久久| 亚洲一区二区三区xxx视频| 国产精品色午夜在线观看| 亚洲欧洲在线看| 日韩免费观看网站| 狠狠躁夜夜躁人人躁婷婷91| 欧美成人午夜视频| 成人精品视频在线| 国产成人一区二区三区| 亚洲日本成人网| 欧美精品情趣视频| 日韩黄色在线免费观看| 青青草原一区二区| 69久久夜色精品国产69乱青草| 在线一区二区日韩| 国产精品极品美女在线观看免费| www日韩欧美| 国产精品久久久久9999| 91精品成人久久| 欧美日韩国产限制| 欧美日韩人人澡狠狠躁视频| 黑人巨大精品欧美一区免费视频| 日韩国产欧美区| 亚洲xxxx妇黄裸体| 国产精品视频专区| 日韩欧美中文第一页| 欧美激情videos| 久久亚洲精品国产亚洲老地址| 在线丨暗呦小u女国产精品| 精品日韩美女的视频高清| 国产精品成人一区| 亚洲色图第一页| 久久频这里精品99香蕉| 欧美日韩成人在线观看| 欧美午夜影院在线视频| 欧美日韩黄色大片| 色综合久久久久久中文网| 国产精品草莓在线免费观看| 最近2019年日本中文免费字幕| 91tv亚洲精品香蕉国产一区7ujn| 亚洲精品黄网在线观看| 色综合天天综合网国产成人网| 亚洲人成自拍网站| 欧美视频13p| 久久久久久久亚洲精品| 最近中文字幕2019免费| 97视频在线免费观看| 5566成人精品视频免费| 萌白酱国产一区二区| 97在线日本国产| 国产精品av在线播放| 久久精品视频中文字幕| 久久久久成人精品| 91欧美精品午夜性色福利在线| 国产成人在线视频| 中文字幕在线观看亚洲| 欧美性猛交xxxx黑人| 97**国产露脸精品国产| 成人xxxxx| 欧美成人第一页| 久久亚洲综合国产精品99麻豆精品福利| 日韩亚洲国产中文字幕| 精品国产一区二区三区久久狼黑人| 亚洲成色777777在线观看影院| 精品中文字幕在线2019| 福利二区91精品bt7086| 精品久久久视频| 亚洲久久久久久久久久| 久久在线精品视频| 色多多国产成人永久免费网站| 亚洲电影免费观看高清完整版在线观看| 欧美日韩国内自拍| 国产精品第七影院| 欧美日韩一区二区三区在线免费观看| 岛国视频午夜一区免费在线观看| 亚洲国产精品人久久电影| 亚洲成人免费网站| 成人免费午夜电影| 亚洲国产成人久久综合| 中文字幕亚洲无线码在线一区| 亚洲人成在线观看网站高清| 欧美一级淫片播放口| 欧美多人爱爱视频网站| 国产欧美一区二区白浆黑人| 国产亚洲综合久久| 国产亚洲日本欧美韩国| 日韩性xxxx爱| 国产精品99蜜臀久久不卡二区| 精品毛片网大全| 久久久综合免费视频| 欧美性猛交xxxx乱大交| 另类专区欧美制服同性| 精品免费在线视频| 最新国产精品亚洲| 日韩精品在线观看视频| 日韩国产高清视频在线| 夜夜嗨av一区二区三区免费区| 国产精品国模在线| 国产欧美在线视频| 日韩精品极品视频免费观看| 精品视频中文字幕| 日韩在线观看av| 国产美女精品免费电影| 高清一区二区三区日本久| 97人人爽人人喊人人模波多| 欧美午夜视频在线观看| 国内偷自视频区视频综合| 欧美丰满少妇xxxx| 亚洲精品中文字幕有码专区| 欧美午夜性色大片在线观看| 亚洲另类图片色| 91视频8mav| 91视频国产精品| 91精品久久久久久久久久久| 亚洲精品视频在线观看视频| 亚洲free性xxxx护士hd| 欧美视频一二三| 亚洲精品狠狠操| 热久久99这里有精品| 一区二区三区视频观看| 国产a级全部精品| 国产亚洲精品久久久优势| 亚洲在线免费观看| 不卡毛片在线看| 亚洲一区二区国产| 日韩av电影手机在线| 欧美性开放视频| 精品久久久久久久中文字幕| 欧美日韩精品在线视频| 国产欧美日韩中文| 日韩av片永久免费网站| 亚洲aaaaaa| 97精品久久久| 亚洲深夜福利在线| 欧美日韩精品国产| 欧美久久精品午夜青青大伊人| 91精品国产综合久久久久久蜜臀| 国产精品亚洲片夜色在线| 国产精品夜间视频香蕉| 国产一区二区久久精品| 欧美日韩精品在线| 日韩中文字幕国产精品| 日韩女优人人人人射在线视频| 91天堂在线视频| 欧美日韩国产一区在线| 97婷婷大伊香蕉精品视频| 中文亚洲视频在线| 琪琪亚洲精品午夜在线| 精品女同一区二区三区在线播放| 日韩av电影免费观看高清| 色妞在线综合亚洲欧美| 欧美大尺度在线观看| 欧美尤物巨大精品爽| 久久激情五月丁香伊人| 欧美成人一区二区三区电影| 2019最新中文字幕|