上传文件到java后台只能用multipart/form-data格式吗?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了上传文件到java后台只能用multipart/form-data格式吗?相关的知识,希望对你有一定的参考价值。
参考技术A 表单中enctype="multipart/form-data"的意思,是设置表单的MIME编码。默认情况,这个编码格式是application/x-www-form-urlencoded,不能用于文件上传;
只有使用了multipart/form-data,才能完整的传递文件数据,进行下面的操作。
<form method="post" action="/TomcatTest/UploadServlet" enctype="multipart/form-data">
<table border="1px" bordercolor="red" cellpadding="0" cellspacing="0">
<tr>
<td>上传文件:</td>
<td><input type="file" name="uploadFile" /></td>
</tr>
<tr>
<td>确认提交:</td>
<td><input type="submit" value="上传文件" /></td>
</tr>
</table>
</form>追问
如果不是表单提交的话 java后台能够使用几种格式接收文件
追答后台接收文件,框架采用的Spring Boot 微服务框架,因为该框架搭建很方便所以采用这个框架写例子。
多文件上传以及java后台接受
最近项目用到的,实现多文件以及一些信息上传,
以及后台接收及读取用到了spring及springmvc相关框架。
不多说废话,直接上例子(这有关键代码)
首先,前台页面
<form action="/uploader/upload/uploadFiles" method="post" enctype="multipart/form-data"> <input type="file"size="30" name="uploadify"multiple="true" id="files" /> <button id="uploadFiles">上传文件</button> <input type="hidden" id="username"name="username" /> <input type="hidden" id="directory" name="directory"/> </form>
首先解释下action中的地址为我后台接受文件的地址,
因为上传文件,所以enctype="multipart/form-data"是必须的
同时选择多个文件上传,不使用各种控件的话,把multiple设置为"true"即可。
另外,上传文件input中的name属性很重要,后台获取文件会用到的。
下面上后台代码,username和directory可以在参数中直接获取
@RequestMapping(value = "/uploadFiles", method = RequestMethod.POST, consumes = "multipart/*") publicvoid uploadFilesFromHtml( @RequestParam(defaultValue = "") String username, @RequestParam(defaultValue = "") String directory, MultipartHttpServletRequest request) throws FileUploadException,IOException { MultiValueMap<String,MultipartFile> map = request.getMultiFileMap();// 为了获取文件,这个类是必须的 List<MultipartFile> list = map.get("uploadify");// 获取到文件的列表 Stringpath= getFilePath(username,directory); //忽略掉,为文件最终上传的地址 List<String>filenameList= newArrayList<>();// // 将图片进行存储 for (MultipartFile mFile : list) { StringoriginalFileName= mFile.getOriginalFilename();//获取文件名称 filenameList.add(originalFileName); byte[] bytes = mFile.getBytes();//获取字节数组 StringfilePath= path+ File.separator+ originalFileName; FileOutputStreamfos= newFileOutputStream(newFile(filePath)); //写出到文件 fos.write(bytes); fos.flush(); fos.close(); } }
本文出自 “枫叶还没红” 博客,请务必保留此出处http://itlearninger.blog.51cto.com/12572641/1913130
以上是关于上传文件到java后台只能用multipart/form-data格式吗?的主要内容,如果未能解决你的问题,请参考以下文章