【问题标题】:Trouble uploading a file in php.-在 php 中上传文件时遇到问题。-
【发布时间】:2010-11-12 20:17:46
【问题描述】:

好吧,我遇到了一些非常奇怪的问题,这就是发生的事情:

这是环境: 我有一个模态面板,它必须能够容纳几个“步骤”,首先你必须上传一个文件,然后处理文件,从这个处理结果中,我必须生成一些 html 来填充下一步。

这就是我所做的: 我正在使用 jquery 的 $.ajaxForm 以两种方式之一(从某个 url,或从您的本地硬盘驱动器使用文件类型输入和 $_FILES)之一上传模式面板表单中的文件,将其提交到 php 文件处理它。处理完成后,我将所有需要的对象都填充了信息,这些对象在我包含的某些模板中使用,然后将其内容填充到文本变量中,我对它们进行 json_encode 以便附加到我的模态面板的第二种形式中。

到目前为止...太好了...直到我发现当我选择“来自 url”并禁用文件输入时,一切正常,但是当我启用文件输入上传时,我得到的结果 html来自模板的包含被破坏(是的......你一定是在说WTF?,但这是真的0_0我尝试了一切,直到我隔离了错误隐藏的地方......)。 它在 html 结果的开头添加了一些“PRE” html 标签,并且每个标签都转换为大写,所有结束标签都将其“”替换为它的实体对应物(如 < 等等) . 我通过在表单的回调中“警告”原始 HTML 结果(显然是对结果表单造成的损害)看到了这一点。 关于会发生什么的任何想法?

提前致谢!!!

PS:我很冗长...:P

【问题讨论】:

    标签: php jquery json file-upload ajaxform


    【解决方案1】:

    据我所知,您不能像这样使用 ajax 提交上传。您可以通过在 &lt;iframe&gt; 中创建一个表单然后提交它来伪造它,但我认为您不能使用纯 ajax 来做到这一点。我是原型用户,但我认为 jquery 或任何其他库也是如此。

    【讨论】:

    • 我唯一的问题是我获得了这种有趣的行为......但就文件上传而言......文件上传正常!那是因为我不是伪造提交,而是真正提交、处理提交并捕获事件。寻找 jquery 的 ajaxForm :)
    • 所以您观察表单 > 验证表单,将输入存储为 json > 提交文件 > 显示新面板?您创建的“结果 html”是什么?我查看了 jquery ajaxForm——我没有意识到它有一个内置的 iframe 选项——它为你做这件事似乎很方便。
    • 只有 json 格式的答案......表单的提交在“post”中,文件也是。
    【解决方案2】:

    您可能应该提供一些有关您正在使用的框架/模板引擎的详细信息,因为听起来这就是问题所在。似乎有关表单的文件输入版本的某些内容正在使其发疯-可能是enctype="multipart/form-data"您必须用于文件上传。您可以通过将enctype 属性添加到非文件对话框来测试该部分,然后查看它是否也变得疯狂。

    如果您的模板引擎负责,解决问题可能涉及升级它或调试其内部结构。

    【讨论】:

    • 不使用任何模板引擎...负担不起开销...基本上模板是通过在外部处理然后包含html以使用生成的数据来“伪造”的。关于enctype,设置好,甚至以相同形式发送的其他东西(如果我禁用文件输入)也没有做任何有趣的事情......我不知道...... =(谢谢!!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-02-14
    • 2018-07-29
    • 2023-02-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多