smartupload工具上传文件
生活随笔
收集整理的這篇文章主要介紹了
smartupload工具上传文件
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
目錄
1.將jar包添加到項目中
2.準備上傳的頁面
3.后臺代碼:
Servlet中獲取JSP頁面中的內(nèi)置對象PageContext
smartupload常用方法
文件下載
1.將jar包添加到項目中
? smartupload.jar ? javaee-api-7.0.jar2.準備上傳的頁面
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html><head><title>$Title$</title></head><body><h1>上傳圖片和文本</h1><form action="uploadtest" method="post" enctype="multipart/form-data">姓名:<input type="text" name="uname"><br>圖片:<input type="file" name="pic"><br><input type="submit" value="上傳到服務(wù)器"></form></body> </html>注:(1)form標簽中要添加enctype屬性
(2)提交方式必須是post
3.后臺代碼:
package servlet;import com.jspsmart.upload.File; import com.jspsmart.upload.SmartUpload; import com.jspsmart.upload.SmartUploadException;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 javax.servlet.jsp.JspFactory; import javax.servlet.jsp.PageContext; import java.io.IOException;@WebServlet(urlPatterns = "/uploadtest") public class UploadServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doPost(req, resp);}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {try {//1.創(chuàng)建上傳文件的對象SmartUpload smartUpload = new SmartUpload();//2.初始化上傳操作//在servlet中獲取jsp的內(nèi)置對象pageContext//通過工具類JspFactory.getDefaultFactory()的getPageContext()//getPageContext()中有7個參數(shù)//參1:當前servlet對象;參2:req;參3:resp;參4:字符串,傳入jsp的錯誤頁面;參5:是否使用session;參6:緩沖區(qū)大小;參7:緩沖區(qū)滿了溢出部分是否加入到輸出流中PageContext pageContext = JspFactory.getDefaultFactory().getPageContext(this, req, resp, null, false, 1024, true);smartUpload.initialize(pageContext);//2.1 設(shè)置編碼smartUpload.setCharset("utf-8");//3.文件上傳到服務(wù)器smartUpload.upload();//4.獲取文件信息File file = smartUpload.getFiles().getFile(0);//獲取指定下標的上傳文件String fileName = file.getFileName();//獲取上傳的文件名String contentType = file.getContentType();//獲取上傳文件的類型//獲取文本信息String uname = smartUpload.getRequest().getParameter("uname");System.out.println("uname="+uname);//5.指定上傳的路徑(設(shè)置上傳的文件在服務(wù)器中保存的位置)//首先在web下創(chuàng)建uploadfiles文件夾,并且創(chuàng)建文件a.txt,因為空文件夾無法部署到服務(wù)器String uploadpath="/uploadfiles/"+fileName;//6.保存到指定位置,File.SAVEAS_VIRTUAL表示保存到虛擬路徑中file.saveAs(uploadpath,File.SAVEAS_VIRTUAL);//7.跳轉(zhuǎn)成功頁面,在頁面中顯示圖片req.setAttribute("filename",fileName);req.getRequestDispatcher("success.jsp").forward(req,resp);} catch (SmartUploadException e) {e.printStackTrace();}} }?
(1)此時如果表單中有其他數(shù)據(jù)時,不能通過request直接獲取,需要通過SmartUpload對象獲取 smartUpload.getRequest().getParameter("uname") 并且該代碼要在SmartUpload操作完成后添加 (2)解決亂碼: new String(name.getBytes("GBK"),"utf-8")Servlet中獲取JSP頁面中的內(nèi)置對象PageContext
JspFactory.getDefaultFactory().getPageContext(.........)
smartupload常用方法
文件下載
package servlet;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 java.io.IOException; import java.net.URLEncoder;@WebServlet(urlPatterns = "/downimg") public class DownServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doPost(req, resp);}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {String filename = req.getParameter("filename");//獲取要下載的文件名String path="/uploadfiles/"+filename;//文件路徑//設(shè)置響應(yīng)的數(shù)據(jù)類型--將響應(yīng)的內(nèi)容設(shè)置為通用的二進制流resp.setContentType("application/octet-stream");//響應(yīng)的頭信息,設(shè)置文件名編碼格式,避免頁面中下載的文件名亂碼//attachment 告訴瀏覽器以附件的方式下載文件(彈出下載框)resp.addHeader("Content-Disposition","attachment;filename="+ URLEncoder.encode(filename,"UTF-8"));//跳轉(zhuǎn)頁面req.getRequestDispatcher(path).forward(req,resp);//清空緩沖區(qū):將服務(wù)端緩沖區(qū)的文件內(nèi)容,立即全部傳送給客戶端resp.flushBuffer();} }?
本地圖片上傳到服務(wù)器后,并在頁面顯示圖片
?
?
?
總結(jié)
以上是生活随笔為你收集整理的smartupload工具上传文件的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python有道字典_Python3基础
- 下一篇: 电脑 | 更新后显示器无法实现夜间模式