千家信息网

如何使用SpringMVC接收文件流上传和表单参数

发表于:2025-01-20 作者:千家信息网编辑
千家信息网最后更新 2025年01月20日,这篇文章主要介绍"如何使用SpringMVC接收文件流上传和表单参数"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"如何使用SpringMVC接收文件流上传和表
千家信息网最后更新 2025年01月20日如何使用SpringMVC接收文件流上传和表单参数

这篇文章主要介绍"如何使用SpringMVC接收文件流上传和表单参数"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"如何使用SpringMVC接收文件流上传和表单参数"文章能帮助大家解决问题。

接收文件流上传和表单参数

在SpringMVC中,接收文件流非常简单,我们可以写个接口用来接收一些文件,同时还可以接收表单参数。

代码参考如下:

JAVA服务端代码

/** * 接收文件流 * * @param request 请求 * @return OK */@RequestMapping(value = "/receive/file", method = POST)public String receiveFile(HttpServletRequest request) {    // 转换为 MultipartHttpServletRequest    if (request instanceof MultipartHttpServletRequest) {        MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;        // 通过表单中的参数名来接收文件流(可用 file.getInputStream() 来接收输入流)        MultipartFile file = multipartRequest.getFile("file");        System.out.println("上传的文件名称:" + file.getOriginalFilename());        System.out.println("上传的文件大小:" + file.getSize());        // 接收其他表单参数        String name = multipartRequest.getParameter("name");        String content = multipartRequest.getParameter("content");        System.out.println("name:" + name);        System.out.println("content:" + content);        return "OK";    } else {        return "不是 MultipartHttpServletRequest";    }}

HTML页面代码

SpringMVC接收文件上传,并对文件做处理

  • http client版本4.1.1

  • spring版本3.2.11

在这个例子里面我接收了文件,并转发给另一个机器,其实接收的时候文件的流已经拿到了,想保存到本地,或者对文件分析,自己可以斟酌。

springmvc配置

                                                                text/html;charset=UTF-8                                                                        true                                                                                                                                                                                                                                                                                                                                        0                UTF-8                zh_CN                0.##########                ignore                                                                                    

controller代码如下

@RequestMapping(value = "/uploadFile", method = RequestMethod.POST)@ResponseBodypublic String uploadFile(HttpServletRequest request) throws Exception {    FileOutputStream fos = null;    InputStream in = null;    String fileUrl = null;    try {        //将当前上下文初始化给  CommonsMutipartResolver (多部分解析器)        CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver(request.getSession().getServletContext());        //检查form中是否有enctype="multipart/form-data"        if (multipartResolver.isMultipart(request)) {            //将request变成多部分request            MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest) request;            //获取multiRequest 中所有的文件名            Iterator iterator = multiRequest.getFileNames();            while (iterator.hasNext()) {                MultipartFile multipartFile = multiRequest.getFile(iterator.next().toString());                in = multipartFile.getInputStream();                File file = new File(multipartFile.getOriginalFilename());                fos = new FileOutputStream(file);                byte[] buff = new byte[1024];                int len = 0;                while ((len = in.read(buff)) > 0) {                    fos.write(buff, 0, len);                }                String uploadUrl = platformHttpsDomain + "/uploadFile";                HttpPost post = new HttpPost(uploadUrl);                HttpClient httpclient = new DefaultHttpClient();                MultipartEntity reqEntity = new MultipartEntity();                reqEntity.addPart("file", new FileBody(file));                post.setEntity(reqEntity);                HttpResponse response = httpclient.execute(post);                int statusCode = response.getStatusLine().getStatusCode();                if (statusCode == HttpStatus.SC_OK) {                    fileUrl = EntityUtils.toString(response.getEntity());                }                file.deleteOnExit();            }        }    } catch (Exception e) {        e.printStackTrace();    } finally {        if (fos != null) {            try {                fos.close();            } catch (IOException e) {            }        }        if (in != null) {            try {                in.close();            } catch (IOException e) {            }        }    }    return fileUrl;}

关于"如何使用SpringMVC接收文件流上传和表单参数"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注行业资讯频道,小编每天都会为大家更新不同的知识点。

0