最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2021年09月01日 15:51:55   作者:yjx23332  
這篇文章主要為大家詳細(xì)介紹了JSP實(shí)現(xiàn)文件上傳功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實(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ù)。

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");// 請求編碼處理,傳輸時
  response.setCharacterEncoding("utf-8");// 響應(yīng)編碼處理,傳輸時
  response.setContentType("utf-8");// 響應(yīng)編碼處理,顯示時
  boolean isMultipart = ServletFileUpload.isMultipartContent(request);// 判斷是否有entype="multipart/form-data"部分
  if (isMultipart) {
   try {
    FileItemFactory factory = new DiskFileItemFactory();
    ServletFileUpload upload = new ServletFileUpload(factory);
    
    //設(shè)置上傳時的內(nèi)存緩沖區(qū)大小,超出時寫入臨時文件  10kb
    ((DiskFileItemFactory) factory).setSizeThreshold(10240);//單位byte
    //設(shè)置臨時文件目錄,防止系統(tǒng)空間不足
    ((DiskFileItemFactory) factory).setRepository(new File(request.getSession().getServletContext().getRealPath("Uploadtemp")));//動態(tài)獲取Uploadtemp文件夾位于該項(xiàng)目中的位置
    //控制上傳單個文件的最大值 20kb
    upload.setSizeMax(20480);//單位byte
    
    List<FileItem> items = upload.parseRequest(request);// 解析form中的所有請求字段,并保存在item中
    Iterator<FileItem> iter = items.iterator();
 
    while (iter.hasNext()) {
     // 解析時無順序,因此需根據(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");//動態(tài)獲取Upload文件夾位于該項(xiàng)目中的位置
      File file = new File(path,fileName);
      item.write(file);//定義上傳路徑,多為服務(wù)器路徑
      System.out.println(fileName+"上傳成功");
     }
     item.delete();//刪除臨時目錄的文件
    }
   } 
   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"+"/"組合鍵選擇下圖第一個類來導(dǎo)入。

 

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

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

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

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

相關(guān)文章

  • 讓你的IIS服務(wù)器支持JSP

    讓你的IIS服務(wù)器支持JSP

    讓你的IIS服務(wù)器支持JSP...
    2006-10-10
  • 基于JNDI的應(yīng)用程序開發(fā)

    基于JNDI的應(yīng)用程序開發(fā)

    基于JNDI的應(yīng)用程序開發(fā)...
    2006-10-10
  • JSP頁面中文參數(shù)的傳遞(get和post方法分析)

    JSP頁面中文參數(shù)的傳遞(get和post方法分析)

    JSP頁面中文參數(shù)傳遞在實(shí)際的編程中是十分有用的,get和post方法更是十分的常見,那如何掌握好這些方法呢?本文將會向你實(shí)現(xiàn)這些方法的具體事宜
    2013-08-08
  • 如何使用JSP+MySQL創(chuàng)建留言本(三)

    如何使用JSP+MySQL創(chuàng)建留言本(三)

    如何使用JSP+MySQL創(chuàng)建留言本(三)...
    2006-10-10
  • Java 獲取URL的內(nèi)容

    Java 獲取URL的內(nèi)容

    Java的網(wǎng)絡(luò)資源比較少,問GG問的比較失敗啊,自己在不斷的摸索中才知道了不少。
    2008-12-12
  • 最新評論

    定安县| 吴忠市| 四子王旗| 万山特区| 邛崃市| 绥江县| 张家港市| 东宁县| 镇巴县| 鄂托克前旗| 宁河县| 三台县| 洪江市| 江永县| 临洮县| 太仓市| 元氏县| 招远市| 泌阳县| 金塔县| 宁南县| 灵丘县| 修文县| 雷州市| 开江县| 汝城县| 乐都县| 桐城市| 出国| 改则县| 仁化县| 永福县| 凌海市| 龙游县| 山丹县| 政和县| 云南省| 公安县| 兴隆县| 宁陵县| 阳山县|