gpt4 book ai didi

coldfusion - 为什么 FORM 范围显示的值少于此 AJAX 文件 uploader 实际提交的值?

转载 作者:行者123 更新时间:2023-12-03 23:38:52 26 4
gpt4 key购买 nike

我不确定我是否理解如何表达我的问题,但我相信它特定于 ColdFusion 对某些 AJAX 表单数据的处理,尽管我引用了特定的 JavaScript 插件。

我正在尝试实现 FilePond uploader在 ColdFusion 2011 服务器上,我在前端对其进行了很好的配置(它将文件上传到 tmp 文件夹就好了),但我的问题是不知道如何让 ColdFusion 处理它随同发送的额外元数据每次上传。在我看来,这些数据与普通的旧隐藏输入字段的格式不同。

当我使用 Dev Tools 检查网络请求时,它看起来与我处理过的其他表单不同。有两个“filepond”条目,一个是 JSON 对象,另一个是二进制图像。当我 时,我只得到tmp上传的文件路径,我可以处理。但是如何访问包含“parentid”的屏幕截图中的 JSON?我没有尝试过,比如 form.FilePond[1],似乎可以工作并抛出错误。

I want to get ColdFusion to process the "parentid" value

更新 CF 表单处理页面的输出:

第一行是 Form.FilePond 的输出。

第二个是Form的cfdump。

第三个是 cfdump URL。

第四个是 getHttpRequestData() 的 cfdump

最佳答案

更新:

为 CF2016 提交的错误(2019 年 4 月后对 CF11 的核心支持结束)

  • CF-4204103 ——FORM当同名字段包含 type=file 时,范围缺少值
  • CF-4204102 - sameFormFieldAsArray设置不适用于 enctype="multipart/form-data"


  • 经过一些测试,我得出结论,这是一个 ColdFusion 错误。

    问题:

    该问题似乎发生在这些条件下
  • 请求是 multipart/form-data发帖
  • 包含多个同名字段
  • 这些字段中至少有 1 个是文件字段,即 type="file"
  • 提交的第一个字段(组内)是 不是 一个文件字段

  • 在这些条件下,ColdFusion 似乎忽略了第一个文件字段之前的所有内容。 (如果您检查 filepond source ut 确认元数据字段在任何文件字段之前提交)。这就是转储 FORM 范围时元数据值不出现的原因。

    请注意, this.sameFormFieldsAsArray 设置无效,因为它不适用于 multipart/form-data要求。

    测试用例

    下面是一个测试用例。请注意,在第一个文件字段之后出现相同命名的字段时,结果是您所期望的吗?

    Screenshot of Test Case
    <cfdump var="#form#" label="Form scope">

    <form method="post" enctype="multipart/form-data">
    <br>First:
    <input type="file" name="fileFirst"><br>
    <input type="text" name="fileFirst" value="Lions"><br>

    <br>Last:
    <input type="text" name="fileLast" value="Tigers"><br>
    <input type="file" name="fileLast"><br>

    <br>Middle:
    <input type="text" name="fileMiddle" value="Bears"><br>
    <input type="file" name="fileMiddle"><br>
    <input type="text" name="fileMiddle" value="Oh My"><br>

    <input type="submit">
    </form>

    解决方法

    This blog使用 FORM 范围的未记录功能提供了一种解决方法。使用 form.getPartsArray()提供对两个“filePond”字段的访问,允许您提取已删除字段的值。不理想,但在问题解决之前确实有效。

    请记住,这是一项未记录的功能,因此请务必隔离代码以便更轻松地进行更改,以防 Adob​​e 将来更改或删除该功能(他们之前已经这样做了,因此发出警告!)。
    <cfscript>
    // dump raw form fields
    for (part in form.getPartsArray()) {
    writeDump({ fieldName = part.getName()
    , isFile = part.isFile()
    , fieldValue = (part.isFile() ? part.getFileName() : part.getStringValue())
    }
    );
    }
    </cfscript>

    关于coldfusion - 为什么 FORM 范围显示的值少于此 AJAX 文件 uploader 实际提交的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55131579/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com