处理多附件上传功能

项目中使用到附件上传功能,就封装了一个共同的页面。我项目的附件是上传后存到某个路径下,将文件名和路径存放到文件表中。

存放表结构如下:

  • 单附件上传

共同jsp页面如下:(affixFile.jsp)

<%--
  Created by IntelliJ IDEA.
  User: liuying
  Date: 2017/7/25
  Time: 下午7:37
  To change this template use File | Settings | File Templates.
--%>
<%@ 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="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<!-- 下载文件 -->
<script type="text/javascript" src="static/js/sinosoft/download.js"></script>
<link rel="stylesheet" id='skin' type="text/css" href="static/js/ymPrompt/skin/qq/ymPrompt.css" />
<script type="text/javascript" src="static/js/ymPrompt/ymPrompt.js"></script>
<%
    String path = request.getContextPath();
    String basePath = request.getScheme() + "://"
            + request.getServerName() + ":" + request.getServerPort()
            + path + "/";

    String FILE_REF_TAB_NAME = request.getParameter("FILE_REF_TAB_NAME");
    String FILE_REF_TAB_KEY_NAME = request.getParameter("FILE_REF_TAB_KEY_NAME");
    String FILE_REF_TAB_KEY_ID = request.getParameter("FILE_REF_TAB_KEY_ID");
    String FILE_REF_TAB_FIELD_NAME = request.getParameter("FILE_REF_TAB_FIELD_NAME");
    String KEY_ID = request.getParameter("KEY_ID");
    String FILE_TYPE = request.getParameter("FILE_TYPE");
    String FILE_TYPE_MESSAGE = request.getParameter("FILE_TYPE_MESSAGE");
%><base href="<%=basePath%>">

<html>
<head>
    <title>附件上传</title>
    <script>


        /**
         * 上传附件
         */
        function uploadFiles(KEY_ID,FILE_REF_TAB_NAME,FILE_REF_TAB_KEY_ID,FILE_REF_TAB_KEY_NAME){

        	var fieldName = KEY_ID.substring(0,KEY_ID.lastIndexOf("_"));
            var formData = new FormData($( "#fileForm"+KEY_ID)[0]);
            formData.append("uploadFile",$("#"+KEY_ID)[0].files[0]);

            formData.append("FILE_REF_TAB_FIELD_NAME",fieldName);
           
           
            formData.append("FILE_REF_TAB_KEY_ID",FILE_REF_TAB_KEY_ID);

            formData.append("FILE_REF_TAB_NAME",FILE_REF_TAB_NAME);
          
            formData.append("FILE_REF_TAB_KEY_NAME",FILE_REF_TAB_KEY_NAME);

            var fileInfo = $('#fileForm'+KEY_ID).find('input[class="fileInfo"]');
            formData.append("fileInfo",fileInfo);

            $.ajax({
                url: '<%=basePath%>/fileinfo/save.do',
                type: 'POST',
                data: formData,
                async: false,
                cache: false,
                contentType: false,
                processData: false,
                success: function(data){

                    if("true" == data.result){
                        var fileTr = data.fileTr;
                        $('#fileInfoDiv'+KEY_ID).find("table").eq(0).append(fileTr);

                    }else if("false" == data.result){
                        var msg = data.msg;
                        ymPrompt.alert({title : '系统提示',message : msg});
                    }
                }
            });
        }
        $(function() {
            //上传
          $('#<%=KEY_ID %>').ace_file_input({
                no_file:'请选择文件 ...',
                btn_choose:'选择',
                btn_change:'更改',
                show_file_list:true,
                droppable:false,
                onchange:uploadFiles,
                thumbnail:false, //| true | large
                allowExt: [<%=FILE_TYPE%>],//该属性只是对文件后缀的控制
                //选择文件 展示之前的事件
                before_change: function (files, dropped) {
                    uploadFiles('<%=KEY_ID %>','<%=FILE_REF_TAB_NAME%>','<%=FILE_REF_TAB_KEY_ID%>','<%=FILE_REF_TAB_KEY_NAME %>');
                    return -1;
                }
            });
        }).on('<%=KEY_ID %>', function(event, info) {
            //alert("请上传<%=FILE_TYPE_MESSAGE%>格式文件","提示");
            ymPrompt.alert({title : '系统提示',message : "请上传<%=FILE_TYPE_MESSAGE%>格式文件"});
        });

    </script>
</head>
<body>
<form  id="fileForm<%=KEY_ID %>" name="fileForm" enctype="multipart/form-data">
    <div class="col-sm-9">
        <div id="fileInfoDiv<%=KEY_ID %>" style="cursor:pointer;">
        <table>
        </table>
        </div>
        <input type="file"  id="<%=KEY_ID %>" name="uploadFile" />
    </div>
</form>
</body>
</html>
页面调用处代码如下:

<!-- 附件上传 -->
                                                                <jsp:include page="../tools/affix/affixFile.jsp">
                                                                    <jsp:param value="QY_APPLY_INFO" name="FILE_REF_TAB_NAME"/>
                                                                    <jsp:param value="QY_PROMISE_FILE" name="FILE_REF_TAB_FIELD_NAME"/>
                                                                    <jsp:param value="${pd.APPLY_ID}" name="FILE_REF_TAB_KEY_ID"/>
                                                                    <jsp:param value="APPLY_ID" name="FILE_REF_TAB_KEY_NAME"/>
                                                                    <jsp:param value="QY_PROMISE_FILE_0" name="KEY_ID"/>
                                                                    <jsp:param value="<%=file_type %>" name="FILE_TYPE"/>
                                                                    <jsp:param value="<%=file_type_message %>" name="FILE_TYPE_MESSAGE"/>
                                                                </jsp:include>

附件上传后台代码:

FileInfoController.java

package com.sinosoft.controller.common;

import java.io.PrintWriter;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.annotation.Resource;

import com.fh.entity.system.User;
import com.fh.util.*;
import com.sinosoft.constant.FieldValueConstant;
import com.sinosoft.service.common.FileInfoManager;

import net.sf.json.JSONObject;

import org.springframework.beans.propertyeditors.CustomDateEditor;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.WebDataBinder;
import org.springframework.web.bind.annotation.InitBinder;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.ModelAndView;

import com.fh.controller.base.BaseController;
import com.fh.entity.Page;

/**
 * 说明:附件表 创建人:mhanyue 创建时间:2017-07-25
 */
@Controller
@RequestMapping(value = "/fileinfo")
public class FileInfoController extends BaseController {

	String menuUrl = "fileinfo/list.do"; // 菜单地址(权限用)
	@Resource(name = "fileinfoService")
	private FileInfoManager fileinfoService;

	/**
	 * 保存附件(单附件)
	 * 
	 * @author:liuying
	 * @date:2017-07-25
	 * @param
	 * @throws Exception
	 */
	@RequestMapping(value = "/save")
	@ResponseBody
	public JSONObject save(
			@RequestParam(value = "uploadFile", required = false) MultipartFile uploadFile,
			String FILE_REF_TAB_NAME, String FILE_REF_TAB_KEY_NAME,
			String FILE_REF_TAB_KEY_ID, String FILE_REF_TAB_FIELD_NAME)
			throws Exception {
		logBefore(logger, Jurisdiction.getUsername() + "新增FileInfo");

		JSONObject json = new JSONObject();
		PageData pd = new PageData();

		pd = this.getPageData();

		// 获取用户信息
		User userInfo = (User) Jurisdiction.getSession().getAttribute(
				Const.SESSION_USER);
		String userName = userInfo.getNAME();

		String sourceFile = DateUtil.getDays(), fileName = "";
		if (null != sourceFile && !sourceFile.isEmpty()) {

			// 获取文件相关信息
			String filePath = FieldValueConstant.OUTPUT_FILE_PATH + sourceFile
					+ "/uploadFiles/";// 修改Const.FILEPATHFILE到时间戳文件夹 //文件上传路径
										// 改动PathUtil.getClasspath()
			String outPath = sourceFile + "/uploadFiles/";
			String sourceFileName = uploadFile.getOriginalFilename();

			// 执行上传操作,保存文件到磁盘
			fileName = FileUpload
					.fileUp(uploadFile, filePath, this.get32UUID()); // 执行上传

			// 获取文件后缀名
			String filePostfix_type = fileName.substring(
					fileName.lastIndexOf("."), fileName.length());
			String fileId = this.get32UUID().toString();

			pd.put("FILE_ID", fileId);
			pd.put("FILE_REF_TAB_NAME", FILE_REF_TAB_NAME);
			pd.put("FILE_REF_TAB_FIELD_NAME", FILE_REF_TAB_FIELD_NAME);
			pd.put("FILE_REF_TAB_KEY_ID", FILE_REF_TAB_KEY_ID);
			pd.put("FILE_REF_TAB_KEY_NAME", FILE_REF_TAB_KEY_NAME);
			pd.put("FILE_POSTFIX_TYPE", filePostfix_type);// 文件后缀名
			pd.put("FILE_CONTENT", "");
			pd.put("FILE_NAME", sourceFileName);

			pd.put("FILE_PATH", filePath);
			pd.put("CREATE_USER", userName);
			pd.put("CREATE_TIME", new Date());
			pd.put("FILE_NAME_NEW", fileName);
			pd.put("FILE_FLAG", "1");
			String basePath = PathUtil.PathAddress();

			// 追加回调tr
			String fileTr = "<tr>";
			fileTr += "<td><a href=\"javascript:void(0)\" οnclick=\"downLoadFileNew('"
					+ sourceFileName
					+ "','"
					+ outPath
					+ "','"
					+ fileName
					+ "','" + basePath + "')\">" + sourceFileName + "</a></td>";// <a
																				// href=\""+filePath.replace("../../","/")+"\">
			fileTr += "<td><a href=\"javascript:void(0)\" οnclick=\"deleteFile(this,'"
					+ fileId + "')\">删除</td>";//
			fileTr += "</tr>";

			fileinfoService.save(pd);
			json.put("result", "true");
			json.put("msg", "上传成功");
			json.put("fileTr", fileTr);

		} else {

			json.put("msg", "上传失败,请重新上传!");
			json.put("result", "false");
		}

		return json;

	}

	/**
	 * 保存附件(多附件)
	 * 
	 * @author:liuying
	 * @date:2017-07-25
	 * @param
	 * @throws Exception
	 */
	@RequestMapping(value = "/saveMore")
	@ResponseBody
	public JSONObject saveMore(
			@RequestParam(value = "uploadFile", required = false) MultipartFile[] uploadFile,
			String FILE_REF_TAB_NAME, String FILE_REF_TAB_KEY_NAME,
			String FILE_REF_TAB_KEY_ID, String FILE_REF_TAB_FIELD_NAME)
			throws Exception {
		logBefore(logger, Jurisdiction.getUsername() + "新增FileInfo");

		JSONObject json = new JSONObject();
		PageData pd = new PageData();

		pd = this.getPageData();

		// 获取用户信息
		User userInfo = (User) Jurisdiction.getSession().getAttribute(
				Const.SESSION_USER);
		String userName = userInfo.getNAME();
		String fileTr = "";
		for (int i = 0; i < uploadFile.length; i++) {

			String sourceFile = DateUtil.getDays(), fileName = "";
			if (null != sourceFile && !sourceFile.isEmpty()) {

				// 获取文件相关信息
				String filePath = FieldValueConstant.OUTPUT_FILE_PATH
						+ sourceFile + "/uploadFiles/";// 修改Const.FILEPATHFILE到时间戳文件夹
														// //文件上传路径
														// 改动PathUtil.getClasspath()
				String outPath = sourceFile + "/uploadFiles/";
				String sourceFileName = uploadFile[i].getOriginalFilename();

				// 执行上传操作,保存文件到磁盘
				fileName = FileUpload.fileUp(uploadFile[i], filePath,
						this.get32UUID()); // 执行上传

				// 获取文件后缀名
				String filePostfix_type = fileName.substring(
						fileName.lastIndexOf("."), fileName.length());
				String fileId = this.get32UUID().toString();

				pd.put("FILE_ID", fileId);
				pd.put("FILE_REF_TAB_NAME", FILE_REF_TAB_NAME);
				pd.put("FILE_REF_TAB_FIELD_NAME", FILE_REF_TAB_FIELD_NAME);
				pd.put("FILE_REF_TAB_KEY_ID", FILE_REF_TAB_KEY_ID);
				pd.put("FILE_REF_TAB_KEY_NAME", FILE_REF_TAB_KEY_NAME);
				pd.put("FILE_POSTFIX_TYPE", filePostfix_type);// 文件后缀名
				pd.put("FILE_CONTENT", "");
				pd.put("FILE_NAME", sourceFileName);

				pd.put("FILE_PATH", filePath);
				pd.put("CREATE_USER", userName);
				pd.put("CREATE_TIME", new Date());
				pd.put("FILE_NAME_NEW", fileName);
				pd.put("FILE_FLAG", "1");
				String basePath = PathUtil.PathAddress();

				// 追加回调tr
				fileTr += "<tr>";
				fileTr += "<td><a href=\"javascript:void(0)\" οnclick=\"downLoadFileNew('"
						+ sourceFileName
						+ "','"
						+ outPath
						+ "','"
						+ fileName
						+ "','"
						+ basePath
						+ "')\">"
						+ sourceFileName
						+ "</a></td>";
				fileTr += "<td><a href=\"javascript:void(0)\" οnclick=\"deleteFile(this,'"
						+ fileId + "')\">删除</td>";//
				fileTr += "</tr>";

				fileinfoService.save(pd);

			} else {

				json.put("msg", "上传失败,请重新上传!");
				json.put("result", "false");
			}

		}
		json.put("result", "true");
		json.put("msg", "上传成功");
		json.put("fileTr", fileTr);
		return json;

	}

	/**
	 * 删除
	 * 
	 * @param out
	 * @throws Exception
	 */
	@RequestMapping(value = "/delete")
	public void delete(PrintWriter out) throws Exception {
		logBefore(logger, Jurisdiction.getUsername() + "删除FileInfo");
		if (!Jurisdiction.buttonJurisdiction(menuUrl, "del")) {
			return;
		} // 校验权限
		PageData pd = new PageData();
		pd = this.getPageData();
		fileinfoService.delete(pd);
		out.write("success");
		out.close();
	}

	/**
	 * 删除
	 * 
	 * @param out
	 * @throws Exception
	 */
	@RequestMapping(value = "/deleteFile")
	@ResponseBody
	public JSONObject deleteFile(Page page) throws Exception {
		logBefore(logger, Jurisdiction.getUsername() + "删除FileInfo");
		PageData pd = new PageData();
		pd = this.getPageData();
		page.setPd(pd);
		JSONObject jsonObj = new JSONObject();
		try {
			fileinfoService.delete(pd);
			jsonObj.put("result", true);
		} catch (Exception e) {
			jsonObj.put("result", false);
		}
		return jsonObj;
	}

	/**
	 * 列表
	 * 
	 * @param FILE_REF_TAB_KEY_ID
	 *            主键ID
	 * @throws Exception
	 */
	@RequestMapping(value = "/list")
	@ResponseBody
	public JSONObject list(String FILE_REF_TAB_NAME,
			String FILE_REF_TAB_KEY_NAME, String FILE_REF_TAB_KEY_ID,
			String FILE_REF_TAB_FIELD_NAME, String operator) throws Exception {
		logBefore(logger, Jurisdiction.getUsername() + "列表FileInfo");
		// if(!Jurisdiction.buttonJurisdiction(menuUrl, "cha")){return null;}
		// //校验权限(无权查看时页面会有提示,如果不注释掉这句代码就无法进入列表页面,所以根据情况是否加入本句代码)
		JSONObject json = new JSONObject();
		String fileListStr = fileinfoService.listById(FILE_REF_TAB_NAME,
				FILE_REF_TAB_KEY_NAME, FILE_REF_TAB_KEY_ID,
				FILE_REF_TAB_FIELD_NAME, operator);
		// System.out.println("fileList=====" + fileListStr);
		json.put("fileTr", fileListStr);
		return json;
	}

	/**
	 * 去新增页面
	 * 
	 * @param
	 * @throws Exception
	 */
	@RequestMapping(value = "/goAdd")
	public ModelAndView goAdd() throws Exception {
		ModelAndView mv = this.getModelAndView();
		PageData pd = new PageData();
		pd = this.getPageData();
		mv.setViewName("fileInfo/fileinfo/fileinfo_edit");
		mv.addObject("msg", "save");
		mv.addObject("pd", pd);
		return mv;
	}

	/**
	 * 去修改页面
	 * 
	 * @param
	 * @throws Exception
	 */
	@RequestMapping(value = "/goEdit")
	public ModelAndView goEdit() throws Exception {
		ModelAndView mv = this.getModelAndView();
		PageData pd = new PageData();
		pd = this.getPageData();
		pd = fileinfoService.findById(pd); // 根据ID读取
		mv.setViewName("fileInfo/fileinfo/fileinfo_edit");
		mv.addObject("msg", "edit");
		mv.addObject("pd", pd);
		return mv;
	}

	/**
	 * 批量删除
	 * 
	 * @param
	 * @throws Exception
	 */
	@RequestMapping(value = "/deleteAll")
	@ResponseBody
	public Object deleteAll() throws Exception {
		logBefore(logger, Jurisdiction.getUsername() + "批量删除FileInfo");
		if (!Jurisdiction.buttonJurisdiction(menuUrl, "del")) {
			return null;
		} // 校验权限
		PageData pd = new PageData();
		Map<String, Object> map = new HashMap<String, Object>();
		pd = this.getPageData();
		List<PageData> pdList = new ArrayList<PageData>();
		String DATA_IDS = pd.getString("DATA_IDS");
		if (null != DATA_IDS && !"".equals(DATA_IDS)) {
			String ArrayDATA_IDS[] = DATA_IDS.split(",");
			fileinfoService.deleteAll(ArrayDATA_IDS);
			pd.put("msg", "ok");
		} else {
			pd.put("msg", "no");
		}
		pdList.add(pd);
		map.put("list", pdList);
		return AppUtil.returnObject(pd, map);
	}

	@InitBinder
	public void initBinder(WebDataBinder binder) {
		DateFormat format = new SimpleDateFormat("yyyy-MM-dd");
		binder.registerCustomEditor(Date.class, new CustomDateEditor(format,
				true));
	}
}
FileUpload.java

package com.fh.util;

import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;

import org.apache.commons.io.FileUtils;
import org.springframework.web.multipart.MultipartFile;

/**
 * 上传文件
 * 创建人:mhanyue
 * 创建时间:2017年11月21日
 * @version
 */
public class FileUpload {

	/**上传文件
	 * @param file 			//文件对象
	 * @param filePath		//上传路径
	 * @param fileName		//文件名
	 * @return  文件名
	 */
	public static String fileUp(MultipartFile file, String filePath, String fileName){
		String extName = ""; // 扩展名格式:
		try {
			if (file.getOriginalFilename().lastIndexOf(".") >= 0){
				extName = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf("."));
			}
			copyFile(file.getInputStream(), filePath, fileName+extName).replaceAll("-", "");
		} catch (IOException e) {
			System.out.println(e);
		}
		return fileName+extName;
	}
	
	/**
	 * 写文件到当前目录的upload目录中
	 * @param in
	 * @param fileName
	 * @throws IOException
	 */
	private static String copyFile(InputStream in, String dir, String realName)
			throws IOException {
		File file = mkdirsmy(dir,realName);
		FileUtils.copyInputStreamToFile(in, file);
		return realName;
	}
	
	
	/**判断路径是否存在,否:创建此路径
	 * @param dir  文件路径
	 * @param realName  文件名
	 * @throws IOException 
	 */
	public static File mkdirsmy(String dir, String realName) throws IOException{
		File file = new File(dir, realName);
		if (!file.exists()) {
			if (!file.getParentFile().exists()) {
				file.getParentFile().mkdirs();
			}
			file.createNewFile();
		}
		return file;
	}
	
	
	/**下载网络图片上传到服务器上
	 * @param httpUrl 图片网络地址
	 * @param filePath	图片保存路径
	 * @param myFileName  图片文件名(null时用网络图片原名)
	 * @return	返回图片名称
	 */
	public static String getHtmlPicture(String httpUrl, String filePath , String myFileName) {
		
		URL url;						//定义URL对象url
		BufferedInputStream in;			//定义输入字节缓冲流对象in
		FileOutputStream file;			//定义文件输出流对象file
		try {
			String fileName = null == myFileName?httpUrl.substring(httpUrl.lastIndexOf("/")).replace("/", ""):myFileName; //图片文件名(null时用网络图片原名)
			url = new URL(httpUrl);		//初始化url对象
			in = new BufferedInputStream(url.openStream());									//初始化in对象,也就是获得url字节流
			//file = new FileOutputStream(new File(filePath +"\\"+ fileName));
			file = new FileOutputStream(mkdirsmy(filePath,fileName));
			int t;
			while ((t = in.read()) != -1) {
				file.write(t);
			}
			file.close();
			in.close();
			return fileName;
		} catch (MalformedURLException e) {
			e.printStackTrace();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
		return null;
		
	}
}
Service层的代码就不贴出来了。

  • 多附件上传

多附件上传只是在单附件的基础上增加【multiple="multiple"】属性,后台参数接收多个附件参数就可以。具体如下:

affixFile_more.jsp

<%--
  Created by IntelliJ IDEA.
  User: liuying
  Date: 2017/7/25
  Time: 下午7:37
  To change this template use File | Settings | File Templates.
--%>
<%@ 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="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<!-- 下载文件 -->
<script type="text/javascript" src="static/js/sinosoft/download.js"></script>
<link rel="stylesheet" id='skin' type="text/css" href="static/js/ymPrompt/skin/qq/ymPrompt.css" />
<script type="text/javascript" src="static/js/ymPrompt/ymPrompt.js"></script>
<%
    String path = request.getContextPath();
    String basePath = request.getScheme() + "://"
            + request.getServerName() + ":" + request.getServerPort()
            + path + "/";

    String FILE_REF_TAB_NAME = request.getParameter("FILE_REF_TAB_NAME");
    String FILE_REF_TAB_KEY_NAME = request.getParameter("FILE_REF_TAB_KEY_NAME");
    String FILE_REF_TAB_KEY_ID = request.getParameter("FILE_REF_TAB_KEY_ID");
    String FILE_REF_TAB_FIELD_NAME = request.getParameter("FILE_REF_TAB_FIELD_NAME");
    String KEY_ID = request.getParameter("KEY_ID");
    String FILE_TYPE = request.getParameter("FILE_TYPE");
    String FILE_TYPE_MESSAGE = request.getParameter("FILE_TYPE_MESSAGE");
%><base href="<%=basePath%>">

<html>
<head>
    <title>附件上传</title>
    <script>


        /**
         * 上传附件
         */
        function uploadFiles(KEY_ID,FILE_REF_TAB_NAME,FILE_REF_TAB_KEY_ID,FILE_REF_TAB_KEY_NAME){

        	var fieldName = KEY_ID.substring(0,KEY_ID.lastIndexOf("_"));
            var formData = new FormData($( "#fileForm"+KEY_ID)[0]);
            formData.append("uploadFile",$("#"+KEY_ID)[0].files[0]);

            formData.append("FILE_REF_TAB_FIELD_NAME",fieldName);
           
           
            formData.append("FILE_REF_TAB_KEY_ID",FILE_REF_TAB_KEY_ID);

            formData.append("FILE_REF_TAB_NAME",FILE_REF_TAB_NAME);
          
            formData.append("FILE_REF_TAB_KEY_NAME",FILE_REF_TAB_KEY_NAME);

            var fileInfo = $('#fileForm'+KEY_ID).find('input[class="fileInfo"]');
            formData.append("fileInfo",fileInfo);

            $.ajax({
                url: '<%=basePath%>/fileinfo/saveMore.do',
                type: 'POST',
                data: formData,
                async: false,
                cache: false,
                contentType: false,
                processData: false,
                success: function(data){

                    if("true" == data.result){
                        var fileTr = data.fileTr;
                        $('#fileInfoDiv'+KEY_ID).find("table").eq(0).append(fileTr);

                    }else if("false" == data.result){
                        var msg = data.msg;
                        ymPrompt.alert({title : '系统提示',message : msg});
                    }
                }
            });
        }
        $(function() {
            //上传
          $('#<%=KEY_ID %>').ace_file_input({
                no_file:'请选择文件 ...',
                btn_choose:'选择',
                btn_change:'更改',
                show_file_list:true,
                droppable:false,
                onchange:uploadFiles,
                thumbnail:false, //| true | large
                allowExt: [<%=FILE_TYPE%>],//该属性只是对文件后缀的控制
                //选择文件 展示之前的事件
                before_change: function (files, dropped) {
                    uploadFiles('<%=KEY_ID %>','<%=FILE_REF_TAB_NAME%>','<%=FILE_REF_TAB_KEY_ID%>','<%=FILE_REF_TAB_KEY_NAME %>');
                    return -1;
                }
            });
        }).on('<%=KEY_ID %>', function(event, info) {
            //alert("请上传<%=FILE_TYPE_MESSAGE%>格式文件","提示");
            ymPrompt.alert({title : '系统提示',message : "请上传<%=FILE_TYPE_MESSAGE%>格式文件"});
        });

    </script>
</head>
<body>
<form  id="fileForm<%=KEY_ID %>" name="fileForm" enctype="multipart/form-data">
    <div class="col-sm-9">
        <div id="fileInfoDiv<%=KEY_ID %>" style="cursor:pointer;">
        <table>
        </table>
        </div>
        <input type="file"  id="<%=KEY_ID %>" name="uploadFile" multiple="multiple"/>
    </div>
</form>
</body>
</html>


上述仅适自己项目中使用的情况,记录一下。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值