FormData 实现文件上传实例
来源:互联网 发布:开淘宝店一个月能赚多少钱 编辑:程序博客网 时间:2024/06/01 08:57
这里前端使用了easy-ui的filebox
前端代码
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%String path = request.getContextPath();String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/";%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Insert title here</title></head><body> <h2>文件上传</h2> <div style="margin:20px 0;"></div><form id="importFileForm" method="post" enctype="multipart/form-data"> <div class="easyui-panel" title="Upload File" style="width:400px;padding:30px 70px 50px 70px"><!-- <div style="margin-bottom:20px"><div>Name:</div><input class="easyui-textbox" style="width:100%"></div> --><div style="margin-bottom:20px"><div>File1:</div><input class="easyui-filebox" name="fileImport" id="fileImport" data-options="prompt:'Choose a file...'" style="width:100%"></div><!-- <div style="margin-bottom:20px"><div>File2:</div><input class="easyui-filebox" name="file2" data-options="prompt:'Choose another file...'" style="width:100%"></div> --> <div style="margin-bottom:20px"><div>remark:</div><input class="easyui-textbox" style="width:100%" name="remark" id="remark"></div> <div><a id="upload" class="easyui-linkbutton" style="width:100%">Upload</a></div></div></form><script type="text/javascript">$("#upload").click(function(){ importFileClick();})function importFileClick(){ var file = $('input[name="fileImport"][type="file"]').prop('files')[0];if( file==null ) {alert("请选择文件");return;}//获取文件名称var fileName =file.name; //获取文件类型名称 var filetype = fileName.substring(fileName.lastIndexOf('.'), fileName.length); var fileRemakr = $("input[name='remark']").val(); //文件备注alert(fileRemakr); //计算文件大小 var fileSize = 0; // //如果文件大小大于1024字节X1024字节,则显示文件大小单位为MB,否则为KB if (file.size > 1024 * 1024) { fileSize = Math.round(file.size * 100 / (1024 * 1024)) / 100; if (fileSize > 10) { alert('错误,文件超过10MB,禁止上传!'); return; } fileSize = fileSize.toString() + 'MB'; } else { fileSize = (Math.round(file.size * 100 / 1024) / 100).toString() + 'KB'; } var formData = new FormData(); formData.append("file", file); // 文件对象 formData.append("filetype",filetype); //文件类型 formData.append("fileName",fileName); //文件名 formData.append("fileSize",fileSize); //文件大小 formData.append("upLoader", "${USER.realName }"); //文件上传者 formData.append("remark", fileRemakr); //文件备注 $.ajax({ url:"file/upload", type: 'POST', data: formData, async: false, cache: false, contentType: false, processData: false, success: function (Msg) { alert("上传成功"); $("#remark").val(""); //清空备注的值 $("#fileImport").val(""); }, error: function (Msg) { alert(XMLHttpRequest.status); alert(XMLHttpRequest.readyState); alert(textStatus); } }); } </body></html>
model类的属性
public class FileTransInfo {private String fileName;private String url; private String upLoader;private String GroupName;private String filePath;private String filetype;private String type;private String fileSize;private String remark;private MultipartFile file ;
后台代码
package cn.easyproject.easyee.sm.file.controller;import java.io.File;import java.io.IOException;import java.util.HashMap;import java.util.Map;import javax.servlet.http.HttpServletRequest;import org.apache.commons.io.FileUtils;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import org.springframework.web.bind.annotation.ResponseBody;import org.springframework.web.multipart.MultipartFile;import cn.easyproject.easyee.sm.file.entity.FileInfo;import cn.easyproject.easyee.sm.file.service.FileService;import cn.easyproject.easyee.sm.file.vo.FileTransInfo;@Controller @RequestMapping("file")public class FileController {@Autowiredprivate FileService fileService;//MultipartFile file/** * 文件上传 * @param myfile * @param request * @return */@ResponseBody@RequestMapping(value="/upload",method=RequestMethod.POST)public Map<String, String> UploadFile( FileTransInfo myfile,HttpServletRequest request){ Map<String, String> map = new HashMap<>(); FileInfo newfile = new FileInfo(); newfile.setFilename(myfile.getFileName()); //文件名 newfile.setFilesize(myfile.getFileSize()); //文件大小 newfile.setFiletype(myfile.getFiletype()); //文件类型 newfile.setFileuploader(myfile.getUpLoader()); //文件上传人 newfile.setFilestate("正常"); if(null!=myfile.getRemark()) newfile.setRemark(myfile.getRemark()); String realPath = "G:/upload/"+myfile.getFileName(); //真实文件地址 newfile.setFilepath(realPath); try {FileUtils.copyInputStreamToFile(myfile.getFile().getInputStream(), new File("G:/upload/", myfile.getFile().getOriginalFilename()));fileService.fileUpload(newfile); } catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();} System.out.println("结束"); map.put("info", "上传成功"); return map;}}
总结一下:由于普通的表单提交无法传递file属性 所以要用到formdata来传递
利用formdata的append方法添加要上传的参数,后台用一个实体接收 会自动封装到相应的实体类中
最后再利用
FileUtils.copyInputStreamToFile(myfile.getFile().getInputStream(), new File("G:/upload/", myfile.getFile().getOriginalFilename()));
这个方法 将对应的文件上传到相应的目录
阅读全文
0 0
- FormData 实现文件上传实例
- html5+FormData 实现ajax文件上传
- 前端使用FormData实现上传文件
- 利用html5-formdata实现文件异步上传
- FormData实现ajax方式文件上传
- FormData实现文件的异步上传
- H5 formData实现批量ajax上传文件
- 使用FormData实现异步上传文件
- jquery formdata 文件上传
- formdata 上传文件
- formdata对象上传文件
- formData文件上传--案例
- formData上传文件
- formdata文件上传记录
- formdata上传文件
- 使用FormData上传文件
- formData上传文件
- 使用FormData上传文件
- 2017/12/19C语言笔记整理
- [SDS阅读理解/9]源码中的函数/6
- linux chmod命令
- C/C++ 笔试、面试题目大汇总
- ubuntu16.04安装cuda9——简明教程
- FormData 实现文件上传实例
- Ubuntu16.04 pyfasterrcnn make error
- How to implement JWT Auth About Restful API in Laravel 5.5
- Chrome控制台提示“Slow network is detected. Fallback font will be used while loading”
- 仿射密码加解密及暴力破解c++实现
- android 事件分发机制(源码分析)—(详细)(逐步总结)(值得一看)
- 创建一个双向链表或双向循环链表
- 2017/12/19C语言作业
- 猜1到100之间的数字