您的位置:首页 > 其它

处理多附件上传功能

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

存放表结构如下:



单附件上传

共同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%>],//该属性只是对文件后缀的控制
//
4000
选择文件 展示之前的事件
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)\" onclick=\"downLoadFileNew('"
+ sourceFileName
+ "','"
+ outPath
+ "','"
+ fileName
+ "','" + basePath + "')\">" + sourceFileName + "</a></td>";// <a
// href=\""+filePath.replace("../../","/")+"\">
fileTr += "<td><a href=\"javascript:void(0)\" onclick=\"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)\" onclick=\"downLoadFileNew('"
+ sourceFileName
+ "','"
+ outPath
+ "','"
+ fileName
+ "','"
+ basePath
+ "')\">"
+ sourceFileName
+ "</a></td>";
fileTr += "<td><a href=\"javascript:void(0)\" onclick=\"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
a197
= 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>



上述仅适自己项目中使用的情况,记录一下。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: