当前位置: 首页 > 知识库问答 >
问题:

检查上传的Spring多部分文件是否有表单字段

阳兴文
2023-03-14

我们使用apache文件上传来上传文件,下面的代码也是一样。

 ServletFileUpload upload = new ServletFileUpload(itemFactory);

        List<FileItem> items = upload.parseRequest(request);

        Iterator<FileItem> iterator = items.iterator();

        while (iterator.hasNext()) {
            FileItem item = iterator.next();

            if (item.isFormField()) {
                String name = item.getFieldName();
                String value = item.getString();
                conf.put(name, value);
            } else {
                InputStream is = item.getInputStream();
                byte[] bytes = ByteStreams.toByteArray(is);
                String query = new String(bytes, "UTF-8");
                conf.put("test", query);
            }
        }

但我们最近转向了Spring boot,并尝试使用spring multipart上传文件。替换上述代码的代码将是

        DefaultMultipartHttpServletRequest requestMain = (DefaultMultipartHttpServletRequest) request;
        Iterator<String> fileNameIterator = requestMain.getFileNames();
        ListIterator<MultipartFile> iterator = null;
        while (fileNameIterator.hasNext()) {
            multipartFiles = requestMain.getFiles(fileNameIterator.next());
            iterator = multipartFiles.listIterator();
            while (iterator.hasNext()) {
                MultipartFile item = iterator.next();
                if (item.isEmpty()) {
                    // String name = item.getFieldName();
                    // String value = item.getString();
                    // conf.put(name, value);
                } else {
                    InputStream is = item.getInputStream();
                    byte[] bytes = ByteStreams.toByteArray(is);
                    String query = new String(bytes, "UTF-8");
                    conf.put("query", query);
                }
            }

        }

但是我无法弄清楚如何检查该文件是否有一个表单字段在Springboot.Inapache文件上传它是使用item.isFormField()方法实现的。

共有1个答案

令狐阳秋
2023-03-14

您不需要检查项目是否是表单域。< code > request main . get files(filename iterator . next());方法将返回一个< code>MultipartFile,因此您知道它不是一个表单字段。

要获取表单域,请使用

requestMain.getParameterMap()

或者,对于特定的现场使用

requestMain.getParameter("field")
 类似资料:
  • 来自文档:“当您使用传输管理器下载文件时,实用程序会自动确定对象是否为多部分” 来源:https://AWS . Amazon . com/fr/blogs/developer/parallelizing-large-downloads-for-optimal-speed/ 这意味着某处有指标(元数据?属性?)可以告诉你一个文件是否是多部分的。所以在用java SDK测试之前,我正在用AWS CL

  • 我正在尝试在 Java 应用程序中设置一个 Apache Camel 路由,其中使用者终结点是一个 restlet 组件,它将 HTTP 文件上传作为多部分表单数据的 POST 进行处理,然后创建者终结点将请求转发到也接受多部分表单数据的 rest 服务。我是骆驼的新手,不知道如何正确地连接它。以下是到目前为止我的路线。我是否需要对正文进行任何转换,还是会按原样转发多部分表单数据?有人可以为我提供

  • 问题内容: 如何检查用户上传的文件在Python(Google App Engine)中是否为真实的jpg文件? 这是我现在所走的距离: 脚本通过HTML Form Post接收图像,并由以下代码处理 我找到了mimetypes.guess_type,但是它对我不起作用。 问题答案: 如果您需要的不仅仅是扩展名,一种方法是读取JPEG标头,并检查其是否与有效数据匹配。格式为: 因此快速识别器将是:

  • 我正在Spring controller中努力实现多部分文件上传。我读过很多问题,谷歌,但似乎什么都不管用。 我明白了 我的BE控制器: FE,angularJS: HTML: 还有应用程序。属性包括: 更新: 当我按照@Byeon0gam的建议从我的控制器中删除@RequestParam时,我不再会遇到这个错误,但是我的文件在控制器中是空的。虽然在FE服务中,如我所见,它不是空的:

  • 问题内容: 我是angular.js的初学者,但是对基础知识有很好的了解。 我要做的是上传文件和一些表单数据作为多部分表单数据。我读到这不是angular的功能,但是3rd party库可以做到这一点。我已经通过git克隆了angular-file-upload,但是仍然无法发布简单的表单和文件。 有人可以提供如何执行此操作的示例,html和js吗? 问题答案: 首先 您无需对结构进行任何特殊更改

  • 本文向大家介绍asp.net文件上传解决方案(图片上传、单文件上传、多文件上传、检查文件类型),包括了asp.net文件上传解决方案(图片上传、单文件上传、多文件上传、检查文件类型)的使用技巧和注意事项,需要的朋友参考一下 小编之前也介绍了许多ASP.NET文件上传的解决案例,今天来个asp.net文件上传大集合。 1 使用标准HTML来进行图片上传 前台代码: 后台代码: 2 单文件上传 这是最