servlet 个人信息+图片上传

8 篇文章 0 订阅

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();
}
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值