做了一个图片上传的例子,下面请看代码:
Servlet代码示例:
public class Demo extends HttpServlet {
private static final long serialVersionUID = 1L;
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
doPost(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
//创建磁盘工厂
DiskFileItemFactory dff = new DiskFileItemFactory();
//创建处理工具
ServletFileUpload sfu = new ServletFileUpload(dff);
//.设置上传文件大小:upload.setFileSizeMax(3145728);可设置可不设置
//接收全部内容
List<FileItem> items = null;
try {
items = sfu.parseRequest(req);//解析表单中的每一个表单项,封装成FileItem对象,
以List方式返回
} catch (FileUploadException e) {
e.printStackTrace();
}
//循环list
for (FileItem fileItem : items) {
if (!fileItem.isFormField()) {// 判断不是普通文本
String fileName = new File(fileItem.getName()).getName();//获取文件名
File pat=new File("E:\\tupianshangchuan");
BufferedImage bi = ImageIO.read(fileItem.getInputStream());
//如果bi为null值,则表示fileItem不是图片,这样子写可以避免有些不是图片的
文件把后缀名修改成图片的后缀名
if (bi==(null)) {//不能用equals,会报错,equals的使用方如果为null会报错
//不是图片就输出上传的不是图片
System.out.println("上传的不是图片");
}else{
if (!pat.exists()) {//判文件是否存在
pat.mkdirs();//mkdir创建一级文件夹,也就是只能创建一个文件夹;mkdirs创建多级文件夹,也就是路径不存在的文件夹都可以创建
}
File storeFile = new File(pat,fileName);//拼接路径和名字
try {
fileItem.write(storeFile);//将获取的文件流写入给定的storeFile文件中
} catch (Exception e) {
e.printStackTrace();
}
}
}}
}
}
Jsp代码示例:
<style type="text/css">
#previewImg img{
width: 350px;
height:180px;
}
</style>
<form action="${pageContext.request.contextPath}/servler/Ser"
method="post" enctype="multipart/form-data" style="margin-left:30px;"> <br />
<!-- enctype="multipart/form-data"多媒体上传 -->
<!-- type="file" 文件类型-->
<input type="file" class="btn btn-info" name="image" value="" />
<div id="previewImg" contenteditable="true" style="width: 750px; height:180px; border:
1px solid #aaa;"></div><!-- 新属性: contenteditable 属性规定是否可编辑元素的内容。-->
<button type="submit" class="btn btn-info">提交</button>
</form>
<script type="text/javascript" src="${pageContext.request.contextPath}/Content/jquery-1.12.4/jquery-1.12.4.js"></script>
<script>
//实现图片预览功能:preview1使用URL方式实现;preview2使用FileReader方式实现
$('[type=file]').change(function(e) {
var file = e.target.files[0];
preview2(file);
});
function preview2(file) {
var img = new Image(), url = img.src = URL.createObjectURL(file);
var $img = $(img);
img.onload = function() {
URL.revokeObjectURL(url);
$('#previewImg').empty().append($img);
};
}
</script>
上传的图片结果如下: