servlet 個人信息+圖片上傳

jar包:

commons-fileupload-1.1.jar

commons-io-1.3.2.jar



demo.html頁面:

<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=GB18030">
    <title>File upload</title>
</head>
<body>
    <form name="myform" action="fileupload" method="post" enctype="multipart/form-data">
        名字:
        <input type="text" name="name"><br>
          File1:
       <input type="file" name="myfile"><br>
       <br>
       <input type="submit" name="submit" value="Commit">
    </form>
</body>
</html>




web.xml配置

<!-- 圖片上傳 -->
<servlet>
    <servlet-name>Upload</servlet-name>
    <servlet-class>com.rongda.photo.Upload</servlet-class>
</servlet>
 
<servlet-mapping>
    <servlet-name>Upload</servlet-name>
    <url-pattern>/fileupload</url-pattern>
</servlet-mapping>



servlet代碼:

package com.rongda.photo;



import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Iterator;
import java.util.List;


import javax.servlet.ServletException;
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.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;


import com.rongda.vo.PhotoInfo;




@SuppressWarnings("serial")
public class Upload extends HttpServlet {
private String uploadPath = "E:\\upload"; // 上傳文件的目錄


@SuppressWarnings("unchecked")
public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
response.setContentType("text/html; charset=UTF-8");
PrintWriter out = response.getWriter();
PhotoInfoDao photoInfoDao = new PhotoInfoDao();
// 獲得當前時間
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.DATE, 0);
String currentTime = sdf.format(calendar.getTime());
//判斷是否上傳文件表單,也就是form中是否有enctype="multipart/form-data"項;必須post提交,get提交對內容長度有限制
if(ServletFileUpload.isMultipartContent(request)){

DiskFileItemFactory factory = new DiskFileItemFactory();
factory.setSizeThreshold(4096); // 設置緩衝區大小,這裏是4kb
ServletFileUpload upload = new ServletFileUpload(factory);

try {
List items = upload.parseRequest(request);// 得到所有的文件
Iterator iter = items.iterator();
PhotoInfo photoInfo = new PhotoInfo();
while (iter.hasNext()) {
FileItem item = (FileItem) iter.next();
if (item.isFormField()){
// 處理普通表單域
String name = item.getFieldName();
if("name".equals(name)){
String value = item.getString("GBK");
if(null != value && !"".equals(value)){
photoInfo.setName(value);
}
}
} else {
String fileName = item.getName();
if (fileName != null) {
File fullFile = new File(item.getName());
if(!fullFile.getName().endsWith(".jpg") && !fullFile.getName().endsWith(".gif")){
out.print("<script>alert('只能上傳jpg或gif圖片格式!');");
out.print("window.location.href='http://www.baidu.com/';</script>");
                   return;
}
File savedFile = null;
if(fullFile.getName().endsWith(".jpg")){
savedFile = new File(uploadPath, photoInfo.getPhone()+".jpg");
photoInfo.setPhotoName(photoInfo.getPhone()+".jpg");
}
if(fullFile.getName().endsWith(".gif")){
savedFile = new File(uploadPath, photoInfo.getPhone()+".gif");
photoInfo.setPhotoName(photoInfo.getPhone()+".gif");
}
item.write(savedFile);
}
}
}

photoInfoDao.save(photoInfo,currentTime);
out.print("<script>alert('上傳成功!');");
out.print("window.location.href='http://www.baidu.com/';</script>");
return;
} catch (Exception e) {
// 可以跳轉出錯頁面
e.printStackTrace();
}

}else{
throw new RuntimeException("請設置form表單的enctype屬性");
}
}


public void init() throws ServletException {
File uploadFile = new File(uploadPath);
if (!uploadFile.exists()) {
uploadFile.mkdirs();
}
}
}

發佈了4 篇原創文章 · 獲贊 7 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章