jsp+servlet實現圖片上傳

圖片上傳主要代碼(學生系統個人信息中)

  • 步驟一:在web目錄下新建一個項目(圖片上傳的路徑)

  • 步驟二:導入commons-fileupload-1.32.jar和commons-io-2.5.jar

  • 步驟三:編寫jsp頁面(add.jsp)

    <div class="form-group">
        <label for="tel" class="col-sm-2 control-label">照片</label>
        <div class="col-sm-5">
        <input type="file" name="pic" class="form-control" id="pic" placeholder="照片">
        </div>
   </div>
  • 步驟四:編寫servlet(StudentServlet.java)
 @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        private Map<String, String> getParameterMap(HttpServletRequest req) {
        DiskFileItemFactory diskFileItemFactory = new DiskFileItemFactory();
        FileUpload fileUpload = new FileUpload(diskFileItemFactory);

        Map<String,String> map = new HashMap<>();
        try {
            List<FileItem> list = fileUpload.parseRequest(req);

            for (FileItem fileItem : list) {

                if(fileItem.isFormField()){//判斷是否是 普通的表單項

                    map.put(fileItem.getFieldName(),fileItem.getString());

                }else{//說明是 文件上傳的表單項,處理 上傳文件,將上傳文件 保存到服務器的硬盤中

                    //拼接路徑
                    String path = this.getServletContext().getRealPath("/")+"upload"+ File.separator;
                    String fileName = UUID.randomUUID().toString();
                    String suffix = fileItem.getName().substring(fileItem.getName().lastIndexOf('.'));

                    //TODO 驗證 大小、類型 等是否符合要求

                    File file = new File(path+fileName+suffix);
                    fileItem.write(file);

                    //將 路徑 存儲到 map ,以再便存到數據庫裏
                    map.put(fileItem.getFieldName(),"/upload/"+fileName+suffix);
                }
            }

        } catch (FileUploadException e) {
            e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return map;
    }
    
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章