简单的java图片存储方法
2017-12-08 13:22
155 查看
Controller中
//调用
ReceivePIC.receivePIC(request, response);
//封装的方法
package com.jwwl.fsq.util;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
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;
//存储图片到本地相应位置
public class ReceivePIC {
public static void receivePIC(HttpServletRequest request,HttpServletResponse response) {
//获取当前时间,按照时间分成不同的文件夹
Date now=new Date();
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");//可以方便地修改日期格式
String day=dateFormat.format(now);
//获取服务器所在URL地址(相对路径,数据库中储存的地址)
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+request.getContextPath()+"/upload/"+day;
String path = Thread.currentThread().getContextClassLoader().getResource("/").getPath();
// 服务器的绝对路径,在web-inf中的class里
path= new File(new File(path).getParent()).getParent()+"/upload/"+day;
//取得图片储存路径的绝对路径以储存图片
File file=new File(path); // 图片储存路径地址
//如果地址文件夹不存在则创建
if (!file.exists() && !file.isDirectory())
{
System.out.println("//不存在");
file.mkdirs();
} else
{
System.out.println("//目录存在");
}
// 获得磁盘文件条目工厂。
DiskFileItemFactory factory = new DiskFileItemFactory();
// String path = "./WebRoot/upload"+day;
// 设置暂时存放文件的存储室,这个存储室可以和最终存储文件的文件夹不同。因为当文件很大的话会占用过多内存所以设置存储室。
factory.setRepository(new File(path));
// 设置缓存的大小,当上传文件的容量超过缓存时,就放到暂时存储室。
factory.setSizeThreshold(1024 * 1024);
// 上传处理工具类(高水平API上传处理?)
ServletFileUpload upload = new ServletFileUpload(factory);
try {
// 调用 parseRequest(request)方法 获得上传文件 FileItem 的集合list 可实现多文件上传。
List list = (List) upload
.parseRequest(request);
for (FileItem item : list) {
// 获取表单属性名字。
String name = item.getFieldName();
// 如果获取的表单信息是普通的文本信息。即通过页面表单形式传递来的字符串。
if (item.isFormField()) {
// 获取用户具体输入的字符串,
String value = item.getString();
request.setAttribute(name, value);
}
// 如果传入的是非简单字符串,而是图片,音频,视频等二进制文件。
else {
// 获取路径名
String value = item.getName();
// 取到最后一个反斜杠。
int start = value.lastIndexOf("\\");
// 截取上传文件的字符串名字。+1是去掉反斜杠。
String filename = value.substring(start + 1);
request.setAttribute(name, basePath + "/" + filename);
// 收到写到接收的文件中。
OutputStream out1 = new FileOutputStream(new File(path,
filename));
InputStream in = item.getInputStream();
int length = 0;
byte[] buf = new byte[1024];
System.out.println("获取文件总量的容量:" + item.getSize());
while ((length = in.read(buf)) != -1) {
out1.write(buf, 0, length);
}
in.close();
out1.close();
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
//调用
ReceivePIC.receivePIC(request, response);
//封装的方法
package com.jwwl.fsq.util;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
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;
//存储图片到本地相应位置
public class ReceivePIC {
public static void receivePIC(HttpServletRequest request,HttpServletResponse response) {
//获取当前时间,按照时间分成不同的文件夹
Date now=new Date();
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");//可以方便地修改日期格式
String day=dateFormat.format(now);
//获取服务器所在URL地址(相对路径,数据库中储存的地址)
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+request.getContextPath()+"/upload/"+day;
String path = Thread.currentThread().getContextClassLoader().getResource("/").getPath();
// 服务器的绝对路径,在web-inf中的class里
path= new File(new File(path).getParent()).getParent()+"/upload/"+day;
//取得图片储存路径的绝对路径以储存图片
File file=new File(path); // 图片储存路径地址
//如果地址文件夹不存在则创建
if (!file.exists() && !file.isDirectory())
{
System.out.println("//不存在");
file.mkdirs();
} else
{
System.out.println("//目录存在");
}
// 获得磁盘文件条目工厂。
DiskFileItemFactory factory = new DiskFileItemFactory();
// String path = "./WebRoot/upload"+day;
// 设置暂时存放文件的存储室,这个存储室可以和最终存储文件的文件夹不同。因为当文件很大的话会占用过多内存所以设置存储室。
factory.setRepository(new File(path));
// 设置缓存的大小,当上传文件的容量超过缓存时,就放到暂时存储室。
factory.setSizeThreshold(1024 * 1024);
// 上传处理工具类(高水平API上传处理?)
ServletFileUpload upload = new ServletFileUpload(factory);
try {
// 调用 parseRequest(request)方法 获得上传文件 FileItem 的集合list 可实现多文件上传。
List list = (List) upload
.parseRequest(request);
for (FileItem item : list) {
// 获取表单属性名字。
String name = item.getFieldName();
// 如果获取的表单信息是普通的文本信息。即通过页面表单形式传递来的字符串。
if (item.isFormField()) {
// 获取用户具体输入的字符串,
String value = item.getString();
request.setAttribute(name, value);
}
// 如果传入的是非简单字符串,而是图片,音频,视频等二进制文件。
else {
// 获取路径名
String value = item.getName();
// 取到最后一个反斜杠。
int start = value.lastIndexOf("\\");
// 截取上传文件的字符串名字。+1是去掉反斜杠。
String filename = value.substring(start + 1);
request.setAttribute(name, basePath + "/" + filename);
// 收到写到接收的文件中。
OutputStream out1 = new FileOutputStream(new File(path,
filename));
InputStream in = item.getInputStream();
int length = 0;
byte[] buf = new byte[1024];
System.out.println("获取文件总量的容量:" + item.getSize());
while ((length = in.read(buf)) != -1) {
out1.write(buf, 0, length);
}
in.close();
out1.close();
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
相关文章推荐
- java web中图片验证码功能的简单实现方法
- java编程简单获取图片像素的方法
- Java一种减少图片存储空间的方法(转换成jpg格式)
- 关于sql server 存储图片的一个简单方法
- 比较简单的asp.net 网页以HTML形式存储的几个方法
- 上传图片的简单方法
- java拆分字符串最简单的方法
- 上传图片并显示缩略图的最简单方法(c#)
- 防止JAVA代码被反编译的简单方法
- 如何创建一个简单的JAVA存储过程
- 提高Java技能的几种简单有效的方法
- 关于存储过程中一个参数表示多个查询条件使用方法的简单处理
- 汉字转换成Unicode,简单的java实现方法
- 工作之余,整理了一下平时处理数据的一些常用的,简单的方法。希望对学习JAVA的朋友有点帮助
- JAVA6新特性之---java桌面应用中生成托盘(tray)图标的简单方法
- Java - 简单加密-解密方法包装, 含encode(),decode(),md5()
- 如何创建一个简单的JAVA存储过程?[转贴]
- 上传图片并显示缩略图的最简单方法(c#)
- Windows平台下简单运行Java程序的方法
- 显示JPG和GIF图片的简单方法