Servlet 上传图片
Servlet 上传图片
预备
需求包
commons-fileupload -用于上传
jstl -用于jsp页面遍历
servlet-api -使用servlet
pom
<dependencies>
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
</dependency>
</dependencies>
前端代码
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>上传Demo</title>
</head>
<body>
<form action="uploadServlet" method="post"
enctype="multipart/form-data">
上传文件:<input type="file" name="file"><br/>
上传文件:<input type="file" name="file2"><br/>
<input type="submit" />
</form>
<c:forEach items="${pics }" var="p">
<img src="heads/${p }" />
</c:forEach>
</body>
</html>
后端处理代码
package com;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
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.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
@WebServlet("/uploadServlet")
public class uploadServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public uploadServlet() {
super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.sendRedirect("index.jsp");
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 是否是多功能表单
boolean isMultipart = ServletFileUpload.isMultipartContent(request);
if (!isMultipart) {
return;
}
// 目标服务端目录
String path = request.getSession().getServletContext().getRealPath("/heads");
// String path="D:/heads";
File file = new File(path);
// 如果目录不存在就创建目录
if (!file.exists() && !file.isDirectory()) {
file.mkdirs();
}
// 接受文件列表
List piclist = new ArrayList(); // 放上传的图片名
DiskFileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
upload.setHeaderEncoding("UTF-8"); // 处理中文问题
upload.setSizeMax(1024 * 1024 * 5); // 限制文件大小5M
try {
// 得到所有表单元素
List<FileItem> fileItems = upload.parseRequest(request); // 解码请求
for (FileItem item : fileItems) {
System.out.println(item);
// 有可能是 文件,也可能是普通文字
if (item.isFormField()) { // 这个选项是 文字
System.out.println("表单值为:" + item.getString());
} else {
// 是文件
String fileName = item.getName();
System.out.println("文件名是:" + fileName); // 文件名
item.write(new File(path, fileName));
if (fileName.endsWith(".jpg") || fileName.endsWith(".png") || fileName.endsWith(".bmp") || fileName.endsWith(".ico") || fileName.endsWith(".gif")) {
piclist.add(fileName); // 把图片放入集合
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
// 去显示上传的文件
request.setAttribute("pics", piclist);
request.getRequestDispatcher("index.jsp").forward(request, response);
}
}
Servlet 上传图片的更多相关文章
- servlet上传图片 服务器路径(转)
1.在servlet中上传图片,上传的文件夹是imge在webroot下,主要代码如下 private void saveImage(HttpServletRequest request, HttpS ...
- servlet上传图片 服务器路径
1.在servlet中上传图片,上传的文件夹是imge在webroot下,主要代码如下 private void saveImage(HttpServletRequest request, HttpS ...
- JSP && Servlet | 上传图片到数据库
参考博客: https://blog.csdn.net/qiyuexuelang/article/details/8861300 Servlet+Jsp实现图片或文件的上传功能 https://blo ...
- jsp+servlet 上传图片实例
最近,在弄android小程序,现在需要做一个服务器后端,这里我下载了一个商城源码,想添加商品图片,这里在网上找了一个实例 引用: http://blog.csdn.net/shuwei003/art ...
- Servlet doPost方法同时上传图片和传递参数
上传图片和传递参数 上传图片和文件属于enctype="multipart/form-data" form中加入enctype="multipart/form-data ...
- Java Servlet+Objective-c图上传 步骤详细
一. Servlet 1.创建图片保存的路径 在项目的WebContent下创建一个上传图片的专属文件夹. 这个文件夹创建后,我们保存的图片就在该文件夹的真实路径下,但是在项目中是无法看到上传的图片的 ...
- springmvc处理上传图片代码(校验图片尺寸、图片大小)
package com.maizuo.web.controller; import com.maizuo.domain.Result; import com.maizuo.util.Constants ...
- struts2上传图片的全过程
struts2上传图片的过程 1.写一个上传的jsp页面upload_image.jsp,内容如下:<body><center> <font color=" ...
- Android上传图片到服务器
一.android需要导入异步请求的jar包 AsyncHttpClient public static void reg(final Context cont,Bitmap photodata,S ...
随机推荐
- svndumpfilter - 过滤一个 Subversion 仓库的转储文件 `dumpfile'。
SYNOPSIS 总览 svndumpfilter command [options & args] OVERVIEW 概述 Subversion 是一个版本控制系统,允许保存旧版本的文件和目 ...
- node.js提供的服务器live-server的使用
安装node.js的版本控制工具nvm,在终端中执行 curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/instal ...
- express 路由能力
demo var express=require("express"); var app=express(); app.get("/",function(req ...
- vue组件 is ref
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- leetcode-168周赛-1298-你能从盒子中获得的最大糖果数
题目描述: 方法一:bfs class Solution: def maxCandies(self, status: List[int], candies: List[int], keys: List ...
- Database - 数据库隔离级别
总结 数据库在并发的情况下,可能会出现: 脏读 不可重复读 --> 原因:UPDATE操作 幻读 --> 原因:INSERT/DELETE操作 为了避免以上问题,数据库事务增加隔离级别,来 ...
- HIVE基本原理和基础
读时模式:HIVE加载数据时不校验,查询数据时才校验,与数据库相反
- AngularJS 指令实践指南(一)
指令(Directives)是所有AngularJS应用最重要的部分.尽管AngularJS已经提供了非常丰富的指令,但还是经常需要创建应用特定的指令.这篇教程会为你讲述如何自定义指令,以及介绍如何在 ...
- 4.2 react patterns(转)
修改 Props Immutable data representation 确定性 在 getInitialState 中使用 props 私有状态和全局事件 render 包含 side effe ...
- PAT_A1117#Eddington Number
Source: PAT A1117 Eddington Number (25 分) Description: British astronomer Eddington liked to ride a ...