文件的上传和下载
来源:互联网 发布:赶聪互刷源码 编辑:程序博客网 时间:2024/06/05 17:21
文件的上传和下载
用JFinal方式的
html页面获取文件 需要有属性enctype="multipart/from-data" 后台需要通过gitFile的方法才能解析出来request里面的内容,参数和数据。
想要保存文件到服务器端并且保存到数据库,需要分为两步
1.先把文件保存在服务器端 WebRoot/upload下面:
string url=getWebRootPath()+"\\upload\\"+"自己定义的文件名字"
File filePath = new File(url);//先在根目录下面创建文件夹
Map<String, Object> map = UploadUtils.getFile(request, response, dirpath);//其中的request和response可以不要的 只要一个文件的路径就行
下面是对应的工具类的方法;
File uploadFile = new File(url);
if (!uploadFile.exists()) {
//如果目标路径不存在新建一个 id file
uploadFile.mkdirs();
}
boolean isMultipart = ServletFileUpload.isMultipartContent(request);
if (isMultipart) {
DiskFileItemFactory factory = new DiskFileItemFactory();
// 指定在内存中缓存数据大小,单位为byte,这里设为1Mb
factory.setSizeThreshold(1024 * 1024);
// 设置一旦文件大小超过getSizeThreshold()的值时数据存放在硬盘的目录
factory.setRepository(new File("D:\\temp"));
// Create a new file upload handler
ServletFileUpload upload = new ServletFileUpload(factory);
// 指定单个上传文件的最大尺寸,单位:字节,这里设为50Mb
upload.setFileSizeMax(50 * 1024 * 1024);
// 指定一次上传多个文件的总尺寸,单位:字节,这里设为50Mb
upload.setSizeMax(50 * 1024 * 1024);
upload.setHeaderEncoding("UTF-8");
List<FileItem> items = null;
try {
// 解析request请求
items = upload.parseRequest(request);
} catch (FileUploadException e) {
e.printStackTrace();
}
if (isMultipart) {
DiskFileItemFactory factory = new DiskFileItemFactory();
// 指定在内存中缓存数据大小,单位为byte,这里设为1Mb
factory.setSizeThreshold(1024 * 1024);
// 设置一旦文件大小超过getSizeThreshold()的值时数据存放在硬盘的目录
factory.setRepository(new File("D:\\temp"));
// Create a new file upload handler
ServletFileUpload upload = new ServletFileUpload(factory);
// 指定单个上传文件的最大尺寸,单位:字节,这里设为50Mb
upload.setFileSizeMax(50 * 1024 * 1024);
// 指定一次上传多个文件的总尺寸,单位:字节,这里设为50Mb
upload.setSizeMax(50 * 1024 * 1024);
upload.setHeaderEncoding("UTF-8");
List<FileItem> items = null;
try {
// 解析request请求
items = upload.parseRequest(request);
} catch (FileUploadException e) {
e.printStackTrace();
}
if (items != null) {
// 解析表单项目
Iterator<FileItem> iter = items.iterator();
while (iter.hasNext()) {
FileItem item = iter.next();
// 如果是普通表单属性
if (item.isFormField()) {
// 相当于input的name属性 <input type="text" name="content">
String name = item.getFieldName();
// input的value属性
String value = item.getString();
// System.out.println("属性:" + name + " 属性值:" + value);
if("uid".equals(name)){
String p_id = value;
map.put("p_id", p_id);
}else if("remark".equals(name)){
String remark = value;
map.put("remark", remark);
}else if("fileName".equals(name)){
String fileName = value;
map.put("fileName", fileName);
}
}
// 如果是上传文件
else {
// 属性名
Long fieldSize = item.getSize();
// 上传文件名称
String fileName=(String) map.get("fileName");
fileName = fileName.substring(fileName.lastIndexOf("/") + 1);// 获得上传文件的文件名
map.put("fieldSize", fieldSize);
try {
item.write(new File(url,fileName));
map.put("flagMsg", "true");
} catch (Exception e) {
e.printStackTrace();
}
}
}
}else{
map.put("flagMsg", "false");
}
}
// 解析表单项目
Iterator<FileItem> iter = items.iterator();
while (iter.hasNext()) {
FileItem item = iter.next();
// 如果是普通表单属性
if (item.isFormField()) {
// 相当于input的name属性 <input type="text" name="content">
String name = item.getFieldName();
// input的value属性
String value = item.getString();
// System.out.println("属性:" + name + " 属性值:" + value);
if("uid".equals(name)){
String p_id = value;
map.put("p_id", p_id);
}else if("remark".equals(name)){
String remark = value;
map.put("remark", remark);
}else if("fileName".equals(name)){
String fileName = value;
map.put("fileName", fileName);
}
}
// 如果是上传文件
else {
// 属性名
Long fieldSize = item.getSize();
// 上传文件名称
String fileName=(String) map.get("fileName");
fileName = fileName.substring(fileName.lastIndexOf("/") + 1);// 获得上传文件的文件名
map.put("fieldSize", fieldSize);
try {
item.write(new File(url,fileName));
map.put("flagMsg", "true");
} catch (Exception e) {
e.printStackTrace();
}
}
}
}else{
map.put("flagMsg", "false");
}
}
如上代码就是保存在服务器端了
然后就是保存数据库里 存放的是文件的名字 大小及时间;
0 0
- 文件的上传和下载
- 文件的上传和下载
- 文件的上传和下载
- 文件的上传和下载
- 文件的上传和下载
- 文件的上传和下载
- 文件的上传和下载
- 文件的上传和下载
- .文件的上传和下载:
- 文件的上传和下载
- 文件的上传和下载
- 文件的上传和下载
- 文件的上传和下载
- 文件的上传和下载
- 文件的上传和下载
- 文件的上传和下载
- 文件的上传和下载
- 文件的上传和下载
- 【实用教程】阿里云服务器的配置和使用 iis
- NYOJ1022合纵连横(支持删除操作的并查集)
- Oracle 11gR2 RAC修改VIP
- 40个Java多线程问题总结
- 最新IOS App上架App Store图文教程(2017跨平台版)
- 文件的上传和下载
- -----图论建图:模板
- MP4容器系列文章之STSD BOX
- cocos study notes-Scene
- Matplotlib绘制树形图
- matlab之循环结构
- Flex项目中"...\version4locale"错误解决方法
- ORA-01722:invalid number-解决GAT项目中车辆维修Bug(续)
- Spring- HibernateTemplate使用