All Downloads are FREE. Search and download functionalities are using the official Maven repository.

META-INF.resources.admin.docs.files.jsp Maven / Gradle / Ivy

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="admin" uri="http://www.infop.cn/tag/admin"%>




	



	

文件

介绍

文件管理一直是管理软件的基础功能。有些客户要将文件存储在磁盘里,有些客户要将文件存储在数据库里。本系统已经实现这两个功能。

文件采用Servlet的 Part 类进行上传。使用非常简单,只要四步:

  1. 实例化cn.infop.dao.FileDao
  2. 通过request.getPart()获取文件实例
  3. 调用cn.infop.dao.FileDao类实例方法public String savePartToDisk(Part part)将文件保存到磁盘;方法private String saveFileToBlobk(Part part)将文件保存到数据库。参数传入第二步的Part实例,保存成功将返回一个访问文件的URI
  4. 调用第三步返回的URI访问文件
  5. 第三步返回的URI与某个应用表的主键保存到弱实体表,可以实现一条记录保存多个文件

上传文件

上传文件需要结合form和Servlet才能正确的上传。

form必须提供必须的信息,如:

										
<form method="POST" action="console/user-save.do" 
	enctype="multipart/form-data">
	<input type="file" name="avatar" id="avatar"
		accept="image/gif,image/jpeg,image/png">
	
	<button type="submit">保存</button>
</form>										
									
									

上传文件的表单form必须有属性enctype="multipart/form-data"

而上传文件的Servlet也有些是必须的:

										
package cn.infop.controller.user;

import java.io.IOException;
import java.sql.SQLException;

import javax.servlet.ServletException;
import javax.servlet.annotation.MultipartConfig;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.Part;

import org.apache.commons.lang3.StringUtils;

import cn.infop.dao.FileDao;
import cn.infop.dao.UserDao;
import cn.infop.entity.User;
import cn.infop.tools.ConstantUtils;
//必须配置MultipartConfig才能上传文件
@MultipartConfig
@WebServlet("/console/user-save.do")
public class UserSave extends HttpServlet {

	private static final long serialVersionUID = 6061716542948789392L;
	//提取文件名
	private String getFileName(Part part) throws IOException {
		String header = part.getHeader("content-disposition");
		String value = header.substring(header.indexOf("filename=\"") + 10, header.lastIndexOf("\""));
		return value.startsWith("; name=\"") ? "" : value;
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		UserDao dao = new UserDao();
		User user = null;
		String avatar_url = "";

		String username = request.getParameter("username");
		String password = request.getParameter("password");
		String phone = request.getParameter("phone");

		FileDao fileDao = new FileDao();
		//获取part实例,Servlet3.0及上以提供part来上传文件
		Part part = request.getPart("avatar_url");
		//提取上传的文件名
		String new_file_name = getFileName(part);
		//通过判断有没有文件名来决定要不要调用保存文件的方法。这样做可以避免没有文件也上传产生的错误。
		if (StringUtils.isNotEmpty(new_file_name))
			//文件保存成功后,将返回一个访问文件的url
			avatar_url = fileDao.savePartToDisk(part);

		//再将返回一个访问文件的url放到主记录中保存	
		user = new User(username, password, false, avatar_url, phone);

		try {
			dao.save(user);
			request.setAttribute("msg", ConstantUtils.MSG_SAVED);
		} catch (SQLException e) {
			request.setAttribute("msg", ConstantUtils.MSG_SAVE_FAILED);
			e.printStackTrace();
		}

		request.getRequestDispatcher("/console/user-list.jsp").forward(request, response);
	}

}
										




© 2015 - 2025 Weber Informatics LLC | Privacy Policy