黄色电影一区二区,韩国少妇自慰A片免费看,精品人妻少妇一级毛片免费蜜桃AV按摩师 ,超碰 香蕉

JSP實(shí)現(xiàn)文件上傳功能

本文實(shí)例為大家分享了jsp實(shí)現(xiàn)文件上傳功能的具體代碼,供大家參考,具體內(nèi)容如下

一、準(zhǔn)備部分

需要fileupload.jar與io.jar包共同完成。構(gòu)建完成路徑后可繼續(xù)。

資源地址

二、頁面部分

<form action="uploadservlet" method="post" enctype="multipart/form-data">
 學(xué)號:<input type="text" name="sno"/><br/>
 姓名:<input type="text" name="sname"/><br/>
 上傳照片:<input type="file" name="spicture"/><br/>
 <input type="submit" value="注冊"/>
</form>

注意:

1.文件上傳必須要使用post,以避免用get方法時(shí)傳輸總量超過搜索框所能承載最大字符數(shù)。

2.必須加入enctype="multipart.form-data"字段

3.文件處需用“file”

三、servlet部分

package webtest;
 
import java.io.file;
import java.io.ioexception;
import java.util.iterator;
import java.util.list;
 
import javax.servlet.servletexception;
import javax.servlet.annotation.webservlet;
import javax.servlet.http.httpservlet;
import javax.servlet.http.httpservletrequest;
import javax.servlet.http.httpservletresponse;
 
import org.apache.commons.fileupload.fileitem;
import org.apache.commons.fileupload.fileitemfactory;
import org.apache.commons.fileupload.fileuploadbase;
import org.apache.commons.fileupload.fileuploadexception;
import org.apache.commons.fileupload.disk.diskfileitemfactory;
import org.apache.commons.fileupload.servlet.servletfileupload;
 
/**
 * servlet implementation class uploadservlet
 */
@webservlet("/uploadservlet")
public class uploadservlet extends httpservlet {
 private static final long serialversionuid = 1l;
 
 protected void doget(httpservletrequest request, httpservletresponse response)
   throws servletexception, ioexception {
  request.setcharacterencoding("utf-8");// 請求編碼處理,傳輸時(shí)
  response.setcharacterencoding("utf-8");// 響應(yīng)編碼處理,傳輸時(shí)
  response.setcontenttype("utf-8");// 響應(yīng)編碼處理,顯示時(shí)
  boolean ismultipart = servletfileupload.ismultipartcontent(request);// 判斷是否有entype="multipart/form-data"部分
  if (ismultipart) {
   try {
    fileitemfactory factory = new diskfileitemfactory();
    servletfileupload upload = new servletfileupload(factory);
    
    //設(shè)置上傳時(shí)的內(nèi)存緩沖區(qū)大小,超出時(shí)寫入臨時(shí)文件  10kb
    ((diskfileitemfactory) factory).setsizethreshold(10240);//單位byte
    //設(shè)置臨時(shí)文件目錄,防止系統(tǒng)空間不足
    ((diskfileitemfactory) factory).setrepository(new file(request.getsession().getservletcontext().getrealpath("uploadtemp")));//動(dòng)態(tài)獲取uploadtemp文件夾位于該項(xiàng)目中的位置
    //控制上傳單個(gè)文件的最大值 20kb
    upload.setsizemax(20480);//單位byte
    
    list<fileitem> items = upload.parserequest(request);// 解析form中的所有請求字段,并保存在item中
    iterator<fileitem> iter = items.iterator();
 
    while (iter.hasnext()) {
     // 解析時(shí)無順序,因此需根據(jù)名字查找
     fileitem item = iter.next();
     if (item.isformfield()) {//非文件數(shù)據(jù)
      string itemname = item.getfieldname();//獲取非文件的范圍數(shù)據(jù)名
      if (itemname.equals("sno")) {
       int sno = -1;
       sno = integer.parseint(item.getstring("utf-8"));
      }
      else if (itemname.equals("sname")) {
       string sname = null; 
       sname = item.getstring("utf-8");
 
      } 
      else {
       system.out.println("其他字段...");
      }
 
     } else {//文件上傳
      string filename = item.getname();//獲取文件范圍數(shù)據(jù)。路徑及其名稱
      //判斷文件類型
      string ext = filename.substring(filename.indexof(".")+1);
      if(!(ext.equals("png")||ext.equals("gif")||ext.equals("jpg"))) {
       system.out.println("僅支持png.gif,jpg類型文件");
       return ;
      }
      string path = request.getsession().getservletcontext().getrealpath("upload");//動(dòng)態(tài)獲取upload文件夾位于該項(xiàng)目中的位置
      file file = new file(path,filename);
      item.write(file);//定義上傳路徑,多為服務(wù)器路徑
      system.out.println(filename+"上傳成功");
     }
     item.delete();//刪除臨時(shí)目錄的文件
    }
   } 
   catch(fileuploadbase.sizelimitexceededexception e) {
    system.out.println("最大20kb");
   }
   catch (fileuploadexception e) {
    // todo auto-generated catch block
    e.printstacktrace();
   } 
   catch (exception e) {
    // todo auto-generated catch block
    e.printstacktrace();
   }
  }
 }
 
 /**
  * @see httpservlet#dopost(httpservletrequest request, httpservletresponse
  *      response)
  */
 protected void dopost(httpservletrequest request, httpservletresponse response)
   throws servletexception, ioexception {
  // todo auto-generated method stub
  doget(request, response);
 }
 
}

注:

1.若該處標(biāo)紅且鼠標(biāo)懸停后未找到包,則可以使用"alt"+"/"組合鍵選擇下圖第一個(gè)類來導(dǎo)入。

 

2.由于若upload與uploadtemp文件存放于tomcat對應(yīng)的項(xiàng)目下,每一次通過eclipse更新代碼,會(huì)將eclipse下代碼直接覆蓋,因而兩個(gè)文件夾會(huì)直接被覆蓋掉。可以在eclipse中新建,或通過絕對/相對路徑于其他文件夾中來設(shè)置。

3.臨時(shí)文件中的數(shù)據(jù)會(huì)保留很短的時(shí)間,添加sleep讓程序休眠也許可以看到。即使無item.delete(),在整個(gè)會(huì)話完成后,臨時(shí)文件也會(huì)被刪除。

4.若報(bào)錯(cuò)無法找到文件,請嘗試用瀏覽器若谷歌進(jìn)行操作,而不是用eclipse自帶的。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持碩編程。

相關(guān)文章