【问题标题】:Upload File PHP with popup使用弹出窗口上传文件 PHP
【发布时间】:2015-05-16 19:51:20
【问题描述】:

美好的一天,
我目前正在设计一个包含 10 个字段的 form(其中 3 个需要上传文件,而其他的则使用普通的 <input> 函数)。这里我只展示一个带有上传功能的表单示例代码,当用户点击表单上的输入时,它将触发弹出框。

<form name="form1" action="process.php" method="post">
    <input type="text" id="form_ic" name="form_ic" size="30" onClick="return popup('pdf.php')">
    <a href="javascript:popup('pdf.php')">[Upload]</a>
</form>

对于上传文件功能,我需要从原始表单 php 中创建一个弹出框 (pdf.php) 以显示要上传文件的条款(例如,文件必须仅为 .pdf 等在)。真正的上传功能只在pdf.php中的表单上实现如下:

<form name="pdf_upload" action="index.php" method="post" accept-charset="utf-8" enctype="multipart/form-data">
    <input type="file" name="uploadfile" id="uploadfile">
    <button type="submit" name="submit" value="Upload" onClick="window.close();">Upload</button>
</form>

问题来了,

此原始表单的目的是注册用户个人资料。所以我想要做的是,在用户从上传弹出框中选择文件后,文件将被传输回原始表单。用户上传的文件名会以原形式显示在&lt;input type="text" id="form_ic"&gt;后面。转回原始表格的 pdf 文件将连同其他字段详细信息(例如姓名、年龄等)一起提交。供您参考,由于有 3 个字段使用与弹出相同的上传功能,我将实现相同的弹出功能。

我无法将 pdf 文件从弹出 php 传输到原始表单 php,并以原始表单 php 显示上传文件的名称。我真的需要社区的意见来解决这个问题。

我很清楚,要将 .pdf 文件的名称显示到 &lt;input&gt;,您需要 javascript .innerHTML 函数,但我无法从 pdf.php 中检索上传的 .pdf 文件.这可能是由于我的代码设计问题。我不确定我的问题是否需要 AJAX。请帮我。

谢谢。

【问题讨论】:

标签: javascript php forms


【解决方案1】:

你的大部分代码都是正确的,但你需要改变你的方法。

首先,从您的弹出窗口 (pdf.php) 中,您应该上传文件。目前您正在调用 'window.close',因此文件未提交且上传功能未发生。在模态框(Pop-Up)打开的情况下,让文件上传,然后通过ajax,检查是否成功。如果是,那么您可以返回保存在服务器上的文件的名称。这个文件名,你可以传递给你的主表单(字段应该是不可编辑的)

其次,您应该更改您的 JS 代码,以便每当您调用弹出窗口时,您都会发送主窗体的 TextField 的 ID,以便在文件上传后,javascript 将文件名发送到同一字段。

如果您需要更多基于代码的示例,则应参考此示例http://www.web-development-blog.com/archives/upload-in-modal-window-and-pass-values-with-jquery/

以上示例的演示页面可以在:http://www.finalwebsites.com/demos/modal_upload_jquery_thickbox.php

希望这有助于解决您的问题。

【讨论】:

  • 感谢@Vinod Tigadi 的反馈...所以由于我使用模式 php 将文件上传到数据库并保存为 blob 文件,这是否意味着我必须做两个单独的表(一个用于配置文件表,另一个用于 profile_image 表?)。我原来的表结构只有profile 表,它由11个字段组成,问题中提到的10个+主键。所以,由于我每次都使用模态表上传文件,这意味着我不能使用insert into查询,因为它将创建一个新的数据行和update查询以及声明新行的需要。
  • 如果您尝试将图像数据保存为 BLOB,那么您可能需要重新考虑您的设计。是否有任何特殊原因要将 BLOB 保存在数据库中?通常保存文件的最佳方式是保存文件并将 FilePath 存储在数据库中。就是这样。这将是一个干净的解决方案
    关于表结构,对于您的文件上传,最好有 2 个表,一个作为 PROFILE,另一个作为 FILES .如果您有任何问题,请告诉我。
  • 是的,我明白了。感谢您的建议
  • @UnBroKeN。如果对您有帮助,请接受答案。谢谢。
猜你喜欢
  • 1970-01-01
  • 2020-02-20
  • 2016-05-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多