中文JAVA技術(shù)平等自由協(xié)作創(chuàng)造

          Java專題文章博客和開源

          常用鏈接

          統(tǒng)計

          最新評論

          java實現(xiàn)web文件無刷新上傳

            最近在做如何實現(xiàn)文件上傳的相關(guān)工作,查閱了很多資料,發(fā)現(xiàn)網(wǎng)上寫的都不是很直觀,且調(diào)試復(fù)雜,經(jīng)實驗成功。
           
             把form的target設(shè)為頁面里一個看不見的iframe,這樣上傳時候就不會刷新頁面了,比如 :托福答案
           
             <form action="uploadFile" method="post" enctype="multipart/form-data" target="upload">
           
             <input id="uploadfile" name="uploadfile" type="file"/><button>上傳至FTP</button>
           
             </form>
           
             <iframe name="upload" style="display:none"></iframe>
           
             后臺方法代碼如下:
           
             public void uploadFile(HttpServletRequest request) throws IOException {
           
             //創(chuàng)建文件處理工廠,用于生成FileItem對象
           
             DiskFileItemFactory difactory = new DiskFileItemFactory();
           
             //設(shè)置緩存大小,如果上傳問價超過緩存大小,將使用臨時目錄作為緩存托福改分
           
             difactory.setSizeThreshold(1024*1024);
           
             //設(shè)置處理工廠緩存的臨時目錄,此目錄下的文件需要手動刪除
           
             // String realdir = request.getContextPath();//當(dāng)前應(yīng)用程序根路徑托福答案
           
             // System.out.println("realdir------------------"+realdir);
           
             String dir = "D:/fileupload";
           
             File filedir = new File(dir+"filetemp");
           
             if(!filedir.exists()){
           
             filedir.mkdir();
           
             }
           
             difactory.setRepository(filedir);
           
             //設(shè)置文件實際保存的目錄
           
             String userdir = dir + "files";
           
             File fudir = new File(userdir);
           
             if(!fudir.exists()){
           
             fudir.mkdir();
           
             }
           
             //創(chuàng)建request的解析器,它會將數(shù)據(jù)封裝到FileItem對象中
           
             ServletFileUpload sfu = new ServletFileUpload(difactory);
           
             //解析保存在request中的數(shù)據(jù)并返回list集合
           
             List list = null;
           
             try{
           
             list = sfu.parseRequest(request);
           
             }catch(FileUploadException e){
           
             e.printStackTrace();
           
             }
           
             //遍歷list集合,去除每一個輸入項的FileItem對象,并分別獲取數(shù)據(jù)
           
             for(Iterator it = list.iterator();it.hasNext();){
           
             FileItem fi = (FileItem)it.next();
           
             if(fi.isFormField()){
           
             System.out.println("FileFieldName"+fi.getFieldName());
           
             System.out.println("FileString--->"+fi.getString());
           
             }else{
           
             //由于客戶端項服務(wù)器發(fā)送的文件時客戶端的全路徑,我們只需文件
           
             String filename = fi.getName();
           
             // int index = filename.lastIndexOf("\\");
           
             // if(index != -1){
           
             // filename = filename.substring(index+1);
           
             //向服務(wù)器寫出文件
           
             InputStream in = fi.getInputStream();
           
             FileOutputStream fos = new FileOutputStream(fudir+"/"+filename);
           
             byte[] buf = new byte[1024];
           
             int len = -1;
           
             while((len = in.read(buf))!=-1){
           
             fos.write(buf,0,len);
           
             }
           
             //關(guān)閉流
           
             if(in!=null){
           
             try{
           
             in.close();
           
             }finally{
           
             if(fos!=null){
           
             fos.close();
           
             }
           
             }
           
             }
           
             // }
           
             }
           
             }
           
             }
           
           

          posted on 2013-09-07 11:20 好不容易 閱讀(154) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          PK10開獎 PK10開獎
          主站蜘蛛池模板: 正安县| 共和县| 郯城县| 临夏县| 始兴县| 敦化市| 西贡区| 扶风县| 溧阳市| 定陶县| 双牌县| 南雄市| 兰州市| 陇川县| 靖西县| 邵东县| 桂平市| 平昌县| 莒南县| 雅江县| 都江堰市| 玉溪市| 许昌市| 内乡县| 永和县| 托克逊县| 新巴尔虎右旗| 赣州市| 涿鹿县| 蕉岭县| 尚志市| 若尔盖县| 朝阳县| 永城市| 息烽县| 玛曲县| 崇文区| 保德县| 肇州县| 永泰县| 政和县|