亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

上傳文件問題?

上傳文件問題?

慕姐8946757 2017-09-27 23:03:35
package com.itheima.web.servlet;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;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.FileUploadException;import org.apache.commons.fileupload.disk.DiskFileItemFactory;import org.apache.commons.fileupload.servlet.ServletFileUpload;import org.apache.tomcat.util.http.fileupload.IOUtils;import org.fujb.commons.CommonsUtil;@WebServlet("/AddFileServlet")public class AddFileServlet extends HttpServlet {?? ?private static final long serialVersionUID = 1L;?? ?protected void doGet(HttpServletRequest request, HttpServletResponse response)?? ??? ??? ?throws ServletException, IOException {?? ??? ?doPost(request, response);?? ?}?? ?protected void doPost(HttpServletRequest request, HttpServletResponse response)?? ??? ??? ?throws ServletException, IOException {?? ??? ?// 使用FileUpload完成文件上傳?? ??? ?/**?? ??? ? * 使用Commons-FileUpload完成文件上傳的步驟: * 1、生成工廠類 DiskFileItemFactory *?? ??? ? * 2、生成解析器類 ServletFileUpload * 3、解析request對象,的到表單項的對象的集合List?? ??? ? * <FileItem> * 4、遍歷list集合,獲取相關表單項的值?? ??? ? */?? ??? ?// 創建工廠類?? ??? ?DiskFileItemFactory factory = new DiskFileItemFactory();?? ??? ?// 設置文件的緩存路徑?? ??? ?factory.setRepository(new File("D:/upload"));?? ??? ?// 設置上傳的文件大于多少的時候需要緩存,即大小限制?? ??? ?factory.setSizeThreshold(1024 * 1024 * 3);?? ??? ?// 創建解析器類,需要工廠類作為參數?? ??? ?ServletFileUpload fileUpload = new ServletFileUpload(factory);?? ??? ?// 如果文件名出現中文,并且中文亂碼,就可以通過一下設置規避?? ??? ?fileUpload.setHeaderEncoding("UTF-8");?? ??? ?try {?? ??? ??? ?// 解析request,得到表單項對象的集合?? ??? ??? ?List<FileItem> list = fileUpload.parseRequest(request);?? ??? ??? ?for (FileItem fileItem : list) {?? ??? ??? ??? ?if (fileItem.isFormField()) {?? ??? ??? ??? ??? ?// 是普通表單項?? ??? ??? ??? ??? ?// 獲取普通項的值?? ??? ??? ??? ??? ?// String value = fileItem.getString();?? ??? ??? ??? ??? ?// 對普通項中文亂碼的處理?? ??? ??? ??? ??? ?String value = fileItem.getString("UTF-8");?? ??? ??? ??? ??? ?// 獲取當前表單項的name的值?? ??? ??? ??? ??? ?String fieldName = fileItem.getFieldName();?? ??? ??? ??? ??? ?System.out.println("表單項name : " + fieldName + ", 值是: " + value);?? ??? ??? ??? ?} else {?? ??? ??? ??? ??? ?// 是文件表單項?? ??? ??? ??? ??? ?// 獲取文件名?? ??? ??? ??? ??? ?String fileName = fileItem.getName();?? ??? ??? ??? ??? ?System.out.println("文件名: " + fileName);?? ??? ??? ??? ??? ?// 獲取唯一文件名?? ??? ??? ??? ??? ?fileName = CommonsUtil.UUID() + "_" + fileName;?? ??? ??? ??? ??? ?// 目錄分離?? ??? ??? ??? ??? ?String hexString = Integer.toHexString(fileName.hashCode());?? ??? ??? ??? ??? ?String path = hexString.charAt(0) + "/" + hexString.charAt(1);?? ??? ??? ??? ??? ?File destFile = new File("D:/upload/" + path);?? ??? ??? ??? ??? ?destFile.mkdirs();?? ??? ??? ??? ??? ?File file = new File(destFile, fileName);?? ??? ??? ??? ??? ?OutputStream out = new FileOutputStream(file);?? ??? ??? ??? ??? ?// 文件流?? ??? ??? ??? ??? ?InputStream in = fileItem.getInputStream();?? ??? ??? ??? ??? ?// 拷貝文件流?? ??? ??? ??? ??? ?IOUtils.copy(in, out);?? ??? ??? ??? ??? ?// 釋放資源?? ??? ??? ??? ??? ?IOUtils.closeQuietly(in);?? ??? ??? ??? ??? ?IOUtils.closeQuietly(out);?? ??? ??? ??? ?}?? ??? ??? ?}?? ??? ?} catch (FileUploadException e) {?? ??? ??? ?e.printStackTrace();?? ??? ?}?? ?}}? // 釋放資源?? ??? ??? ??? ??? ?IOUtils.closeQuietly(in);?? ??? ??? ??? ??? ?IOUtils.closeQuietly(out);這個位置顯示錯誤,說安靜地關閉未定義怎么解決?(The method closeQuietly(OutputStream) is undefined for the type IOUtils)
查看完整描述

1 回答

已采納
?
HansonQ

TA貢獻223條經驗 獲得超56個贊

對比一下啊jar包版本。這個提示是方法未定義

查看完整回答
反對 回復 2017-09-28
  • 1 回答
  • 0 關注
  • 1272 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號