Extjs:使用提交表单上传文件

2024-02-10

我正在尝试使用 ExtJs 和 Spring 上传文件(excel),但没有成功,所以我希望你能帮助我。在面板中,我有一个按钮(文件上传字段),我可以通过该按钮选择一个要上传的文件。

.
.
,{
    xtype: 'fileuploadfield',
    buttonOnly: true,
    hideLabel: true,
    buttonText: "Importuoti excel failą",
    border: false,
    itemId: "uploadBtn",
    name: 'file'

},
.
.

这是我的控制器。每次我使用 fileuploadfield 选择文件时,它都会激活 uploadFile() 函数。

init: function() {
    var me = this;
    this.listen({
        '#uploadBtn': {
                'change': function(fld, value) {
                    console.log(value);
                    this.getTurtasPanel().setLoading(true, true);
                    if(value != ""){
                        me.uploadFile();
                        fld.reset();
                    }

                }
            },
})

上传文件函数。

uploadFile: function(){
    var fp = Ext.create('Ext.form.Panel', {
        fileUpload: true,
        autoHeight: true,
        bodyStyle: 'padding: 10px 10px 0 10px;',
        labelWidth: 50,
        method: 'POST',
        defaults: {
            anchor: '95%',
            allowBlank: false,
            msgTarget: 'side'
        }
    })
    if(fp.getForm().isValid()){
        fp.getForm().submit({
            url: Turtas.Properties.getServicePath()+'/save/' + record.data.resource,
            headers: {'Content-Type':'multipart/form-data; charset=UTF-8'},
        })
    }

},

和弹簧控制器:

@RequestMapping(value="turtas/save/gelezinkeliai", method=RequestMethod.POST)
    public @ResponseBody void saveGelezinkeliaiFromExcel(@RequestParam("file") MultipartFile file){
    System.out.println(file);
}

我得到的错误是:

Request processing failed; nested exception is org.springframework.web.multipart.MultipartException: Could not parse multipart servlet request; nested exception is java.io.IOException: org.apache.tomcat.util.http.fileupload.FileUploadException: the request was rejected because no multipart boundary was found

the request was rejected because no multipart boundary was found

我认为问题出在我的客户端请求中。我认为我的请求未附加我要上传的文件。我尝试将客户端中的标头设置为未定义,但随后内容类型变为“application/json”,并且出现请求不是多部分的错误。那么我的代码有什么问题吗?我真的希望有人能帮助我解决这个问题。提前致谢 !

Update

感谢@Lorenz Meyer 的回答,但现在我得到了不同的错误:

java.lang.IllegalArgumentException:您的InputStream既不是 OLE2 流,也不是 OOXML 流

我稍微改变了我的源代码。

 @RequestMapping(value="turtas/save/gelezinkeliai", method=RequestMethod.POST)
    public @ResponseBody void saveGelezinkeliaiFromExcel(@RequestParam("file") MultipartFile file){
    System.out.println(file.getContentType());
    System.out.println(file.getSize());
    System.out.println(file.getName());
    System.out.println(file.getOriginalFilename());
    System.out.println(file.isEmpty());
}

Output:

application/octet-stream
0
file

true

从客户端我不包含参数,从服务器端我请求一个参数(文件参数),也许这就是问题所在。错误说我选择了错误的格式文件,尽管我选择了 .xlsx 或 .xls,并且出现了相同的错误。


问题是您在上传功能中创建了一个新表单。您无需提交包含文件上传按钮的表单,而是提交新的空表单。

首先,您必须确保您的文件上传按钮位于表单内。然后您必须提交该表格。

在更改处理程序中,在这一行添加 fld :

me.uploadFile(fld);

将 URL 设置为表单的属性并将 uploadFile 简化为:

uploadFile: function(fld){
    var form = fld.up('form').getForm()
    if(form.isValid()) form.submit()
}

顺便说一句,记录(在 record.data.resource 中)未定义,看来您的代码不完整或无法工作。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Extjs:使用提交表单上传文件 的相关文章

  • 从 Eclipse 导出后,WAR 文件中缺少一些必要的库 - 为什么?

    我接手了一个大学的项目 其中包含一些 Web 服务 通过将项目导出为 WAR 文件 一些库包含在文件中 例如 Axis2 而另一些则不包含 hibernate JDBC 驱动程序 另外 添加到类路径中的 jar 尚未导出 所有库都位于硬盘驱
  • firebase.storage() 不是玩笑测试用例中的函数

    我正在使用 Jest 来测试我的 firebase 功能 这一切都在浏览器中进行 因此我与服务器端的 firebase 没有任何冲突 当我使用firebase auth or firebase database 一切正常 当我尝试使用时fi
  • Puppeteer 的行为与开发者控制台不同

    我正在尝试使用 Puppeteer 提取此页面的标题 https www nordstrom com s zella high waist studio pocket 7 8 leggings 5460106 https www nords
  • 移动浏览器上的 Javascript / jQuery 页面更改事件

    我正在设计一个移动网站 同时考虑所有领先的浏览器 Safari Chrome Dolphin Opera 我想显示一个 正在加载 元素页面导航 更改 请求新页面 我无法在锚标签上使用点击事件 因为有很多锚标签存在preventDefault
  • Firebase 模拟器无法促进/运行新功能

    我有三个云功能 其中两个已部署到我的 firebase 项目中 其中一个是我刚刚添加的 我希望在部署之前在本地测试新的功能 但是当我尝试使用它时却无法使用 并且只有两个已部署的功能可用 Firebase 模拟器在端口上运行良好5001 像往
  • 简单的 Django 图像上传 - 图像文件不保存

    是的 我正在学习如何制作一个简单的图像上传表单以将图像上传到 MEDIA ROOT 表单呈现良好 我没有收到任何错误 但该文件未显示在 MEDIA ROOT 目录中 如果遵循文档示例但无法使其工作 我知道这是因为我没有正确理解 django
  • 无法使用 MV3 从 Firefox 下的通用脚本导出到 background.js

    我试图在服务工作者 background js 和内容脚本之间重用一些功能 https stackoverflow com questions 73421706 how to reuse a javascript function betw
  • JSSOR - 无法读取未定义的类型属性“currentStyle”

    我正在尝试将 Jssor 滑块实现到我的页面中 但我不断在标题中出现该错误 我的内容是通过 Javascript 动态创建的 如下所示 var slide app createHTML div id inventorySlides null
  • 如何使用 QuerySelector 获得第二个匹配项?

    以下语句给出了该类的第一个元素titanic element document querySelector titanic 我如何检索具有相同类的第二个元素 Use document querySelectorAll https devel
  • Bootstrap shown.bs.tab 事件不起作用

    我正在使用灵活的模板 http the8guild com themes html flexy v1 7 stylesPage html 使用引导程序 并且我无法让选项卡上的 shown bs tab 事件正常工作 我已经成功让它发挥作用J
  • 如何在 Angular2 中为表单分配和验证数组

    我的模型 this profile 在 javascript 中有一个属性叫做emails 这是一个数组 email isDefault status 然后我将其定义如下 this profileForm this formBuilder
  • 如何在正则表达式中区分数字和ip地址?

    例如 如果我们查看 5 56 和 183 55 0 144 基本上 当你做这样的事情时 d d 它匹配 5 56 189 55 和 0 144 有没有办法通过正则表达式仅匹配数字而不匹配 ip 地址的部分 我尝试使用前瞻 但我不知道它应该是
  • 在spring mvc中修改请求URI

    我有一个基于 spring mvc 的应用程序 我想在请求 URI 到达控制器之前修改它 例如 控制器的 RequestMapping 是 abc xyz 但传入的请求是 abc 1 xyz 我想修改传入请求以将其映射到控制器 解决方案1
  • 输入和文本区域可以拖动吗?

    MDN 规范以及我能通过 Google 找到的每个网站都说所有 HTML 元素都可以拖动 然而 在实践中 我发现我无法拖动文本输入或文本区域 即使它们已被禁用 例如 使用以下代码 img src http www placehold it
  • 单击文件下载后,成功后使用 AJAX 重定向到另一个页面

    In my WordPress project my Download button containing a zip file which onClick should be downloaded So the HTML producin
  • 在流星收集加载时显示加载程序

    我有一个模板 task list 看起来像这样 each tasks gt task each Template task list tasks返回一个集合 在用户界面中 加载似乎需要一些时间 当集合正在加载时 我想显示一个加载指示器 关于
  • jqPlot DateAxis tickInterval 不起作用

    我试图每月绘制一个包含单个数据点的图表 我会在每个月的第一天将其作为一个点发送到 jqPlot jqplot actualChart 2011 10 01 0 296 2011 11 01 0 682 title programSelect
  • 通过ajax POST提交两次表单

    插入到mysql using php通过文件调用AJAX 前insert语句php代码执行select查询到查找重复记录并继续insert statement Issue 从ajax调用php文件时 它执行了两次并得到作为重复记录的响应 好
  • 将命令行参数传递给 emscripten 生成的应用程序

    当使用 Emscripten 编译 C 程序时 会生成一个 HTML 页面来显示程序的结果 我想知道如何将命令行参数传递给应用程序 例如 对于原始的 C 程序 它是 bfs 32 1 我能够通过向生成的 html 文件添加一行来传递命令行参
  • 如何使用 javascript 迭代文件系统目录和文件?

    我正在使用 Javascript 编写一个应用程序 该应用程序将与 Phonegap 一起使用来制作 Android 应用程序 我正在使用 Phonegap File API 来读取目录和文件 相关代码如下所示 document addEv

随机推荐

  • 以数组形式返回 group_concat 数据

    我想返回使用 group concat 作为数据数组从数据库检索的值 是否可以在 mysql 查询中执行此操作 或者我需要将数据分解成数组吗 GROUP CONCAT sh hold id as holds 返回这个 holds gt 3
  • 为什么从对象继承在 Python 中会有所不同? [复制]

    这个问题在这里已经有答案了 当类从无继承时 我有一个实例类型的对象 gt gt gt class A pass gt gt gt a A gt gt gt type a
  • 将 AVAssetWriter 与原始 NAL 单元结合使用

    我在 iOS 文档中注意到AVAssetWriterInput你可以通过nil为了outputSettings字典来指定输入数据不应重新编码 用于对附加到输出的媒体进行编码的设置 传递 nil 来指定不应重新编码附加的样本 我想利用此功能来
  • 如何为TableView创建NSIndexPath

    我需要在我定义的函数中删除表的第 1 行 为了使用deleteRowAtIndexPath你必须使用一个IndexPath定义了部分和行 如何创建这样的索引路径 以 int 1 作为唯一成员的数组将会崩溃 NSLog 消息指出该部分也需要定
  • pandas 按日期和年份分组并汇总金额

    我有这样的熊猫数据框 d dollar amount 200 25 350 00 120 00 400 50 1231 25 700 00 350 00 200 25 2340 00 date 22 01 2010 22 01 2010 2
  • 调试时如何跳出while循环

    在 Eclipse 中调试期间 我的代码进入了 while 循环 我不想循环直到满足条件 所以请告诉我如何在调试期间退出 while 循环 我看到 F7 在调试菜单下被禁用 请参阅此处的屏幕截图 You can select the lin
  • javascript 函数 btoa 的 C# 版本

    我需要将一些内容从 js 重新编码为 c 利用 js 中的 btoa 方法对一串 unicode 字符将它们转换为 base64 但是 据我所知 javascrpt 使用的编码与 c 中可用的所有编码不同 我需要编码完全相同 并且不会在这些
  • 如何在perl中验证数字?

    我知道有一个图书馆可以做到这一点 使用 Scalar Util qw looks like number 但我想使用 perl 正则表达式来做到这一点 我希望它适用于双数 而不仅仅是整数 所以我想要比这更好的东西 var d thanks
  • 从 OKHTTP 下载二进制文件

    我在我的 Android 应用程序中使用 OKHTTP 客户端进行网络连接 This https stackoverflow com questions 25367888 upload binary file with okhttp fro
  • Xpath获取上面的元素

    假设我有这样的结构 div class a div class b span Text Example span div div 在 xpath 中 我想检索属性 attribute 的值 因为我里面有文本 文本示例 如果我使用这个 xpa
  • 如何在VBA中实现消失动画?

    我正在尝试在 VBA 过程中测试形状上的动画效果 我已经实现了一个目标 即在主序列 定义在哪个位置Timeline 但我无法创建消失的动画 我在代码的开头检查了一些已经存在的 并且 EffectType 似乎返回与相关出现的动画相同的值 因
  • 实现永不过期的 OAuth 刷新令牌

    在 OAuth 2 的上下文中 如何处理refresh token过期 还是缺少 我使用 JSON Web 令牌 JWT 作为access token生命周期较短 20 分钟后过期 据我了解 这意味着我不必存储access token 仅验
  • 带标头的 post 请求中出现错误 411(需要长度),但标头具有 Content-Length。库卷曲

    我使用这个选项 curl easy setopt curl CURLOPT URL urlUpload curl easy setopt curl CURLOPT ERRORBUFFER errorBuffer curl easy seto
  • SQLite 自动增量不起作用

    好吧 这不是垃圾邮件 它应该很简单 我不知道为什么它不起作用 这是我的代码 gamesdatabase openOrCreateDatabase GamesDatabase MODE PRIVATE null gamesdatabase e
  • 获取数组中的所有非唯一值(即:重复/多次出现)

    我需要检查 JavaScript 数组以查看是否存在重复值 做到这一点最简单的方法是什么 我只需要找到重复的值是什么 我实际上不需要它们的索引或它们重复了多少次 我知道我可以循环遍历数组并检查所有其他值是否匹配 但似乎应该有一种更简单的方法
  • 保存和加载数据“MVVM”方式?

    我目前正在使用 Telerik 提供的一些控件开发一个 C WPF 项目 并且我尊重 MVVM 模式 包含数据的模型 将数据呈现给 View 的 ViewModel 显示数据的视图 当然 某些模型可以重用并显示在多个视图中 在我的例子中 数
  • ChangeDetectionStrategy.OnPush 的行为不符合我的预期

    我正在尝试熟悉 Angular 2ChangeDetectionStrategy OnPush性能提升 如所解释的here https blog thoughtram io angular 2016 02 22 angular 2 chan
  • 在执行之前使 CMake 打印命令

    我正在开发一个在 Linux 上使用 CMake 构建的大型 C 项目 CMake 运行正常 在模块和应用程序树中生成大量 Makefile 运行 GNUmake导致链接器错误 我怎样才能得到make在运行之前打印出确切的命令 d 选项不打
  • 使用 JPA 和 Google App Engine 更新查询

    我正在尝试更新我的实体类 但我得到 javax persistence PersistenceException Only select and delete statements are supported 当我不使用 Google 应用
  • Extjs:使用提交表单上传文件

    我正在尝试使用 ExtJs 和 Spring 上传文件 excel 但没有成功 所以我希望你能帮助我 在面板中 我有一个按钮 文件上传字段 我可以通过该按钮选择一个要上传的文件 xtype fileuploadfield buttonOnl