简单的java图片存储方法
来源:互联网 发布:大学专业知乎 编辑:程序博客网 时间:2024/06/04 20:07
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())
{
} else
{
}
// 获得磁盘文件条目工厂。
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();
}
}
}
阅读全文
0 0
- 简单的java图片存储方法
- 关于sql server 存储图片的一个简单方法
- SQL存储图片的方法
- 上传图片的简单方法
- PNG图片存储的方法和技巧
- java简单的图片压缩
- 简单封装本地存储的方法
- java存储H5上传的图片
- 图片文件的分布式存储 ( 简单的负载均衡)
- 简单的存储图片的云盘 PHP实现
- 简单方法的让图片自动切换
- ASP.NET上传图片的简单方法
- C# 一个图片上传的简单方法
- 播放GIF图片的最简单方法
- Latex插入图片的简单方法
- 最简单的显示图片方法
- ios 简单的图片缩放方法
- Android 简单的图片缩放方法
- 我们逃离北上广,美国人逃离硅谷
- 如何清理 Linux 系统开机启动项?
- 1016. 部分A+B (15)
- 国外比较乱套……
- CardView
- 简单的java图片存储方法
- 微信小程序、流应用、原生应用app、轻应用
- 前端跨域调用--JSONP
- Model Tree Structures with Child References
- javascript: instanceof 和 typeof 的区别
- clgao资源网址
- Java面试题全集(下)
- python多进程
- Java环境变量设置