【问题标题】:Upload Image Form and Another Fill-up Form上传图片表格和另一个填写表格
【发布时间】:2012-10-26 01:48:00
【问题描述】:

我拥有的是一个包含姓名、地址等详细信息的表单......以及另一个单独的上传个人资料图片表单。我想在提交“父”(单独)表单时获取该(可选)上传的图片。
现在他们的工作方式是这样的:
上传的图片通过.ajaxSubmit() 发送到 process_uploaded_image.php。然后对其进行处理、调整大小,并在“转储/临时”文件夹中制作新图片。我可以以$image_path_and_name<img src="$image_path_and_name"/> 回显的数据形式将其返回到success: function(data)。我是这样做的 - 有一个临时图像 - 因为
(1) 我想让用户查看他刚刚上传的内容(记住我已经将它返回到 jquery 的路径或 img 元素,我可以放置它我想要的任何地方),并且
(2) 上传的图像不是最终的,直到“父”表单完成注册。毕竟它仍然是一个临时图像。

所以,问题是我想访问上传的图片,并在提交时将其与“父”表单一起“带上”...我该怎么做究竟是这样做的?从技术上讲,它不是父表单,因为我知道表单中的表单是不允许的。但它在逻辑上被捆绑并在该父形式下。我会很感激任何帮助,但如果可能的话,如果你能考虑我目前的情况,我会更加感激,这样我就不必再从头开始了。再次感谢。

我的想法:(请让我知道这是多么可行......和/或关于我如何做 #1 的指南)
1.“重建”或从 ajax-jquery 返回的(数据)$image_path_and_name 字符串或<img src="$image_path_and_name"/> 复制该文件,将其放在最终上传文件夹中。 我不能只使用move_uploaded_file(),可以吗?
2. 因为,从这一点开始一切都是最终的..我可以将它的文件路径以及其他表单信息保存到我的数据库中。
3. 清空转储/临时文件夹。

【问题讨论】:

  • 你在文案中遇到什么问题??
  • 如何复制?我不能只使用move_uploaded_file(),因为它是来自$image_file_path_and_name 的jquery 字符串的形式,或者我可以将其删除为字符串路径和字符串名称——但它仍然不是文件本身......或者可以一世?这就是move_uploaded_file() 的工作方式吗?您需要上传的文件本身吗?
  • php有复制功能,所以如果你有文件路径就可以用它来复制
  • 啊哈,谢谢。我想我可以坚持我的想法,然后呢?有什么不对吗?也许这毕竟可以工作......来自 Haocheng 的隐藏输入字段,以及您的 copy() 函数。谢谢!

标签: php jquery ajax forms file-upload


【解决方案1】:

如果您有文件位置并且在用户验证并确认图像后,您可以使用copy 函数从您的临时文件夹复制到主文件夹。所以它会像

1) copy($file, $newfile)

2) 更新有关新路径的数据库。

3) 取消文件与旧路径的链接。

unlink($file);

更多关于Unlinking a file

【讨论】:

  • 你帮了大忙。如果可以的话,我会分享最佳答案。投票赞成,我衷心感谢您。
  • @Fred gracias,如果您有任何问题,请询问
  • 这正是我想要做的! (没有插件..等)我想上传 1-10 个图像(在我的主表单之外)并将返回的 1-10 个文件名/路径返回到我的主/父表单(在隐藏字段中很好!) .. 这样当用户提交主表单时,文件路径/名称都会与主表单数据的其余部分一起保存到数据库中这样做的原因是不允许任何图像上传超时/错误干扰主/父表单数据发布(不松散他们的信息)是否有任何工作示例或链接?
【解决方案2】:

制作两个文件夹,一个作为临时文件夹,另一个作为最终文件夹.......上传图片后,将文件名放入主窗体中的隐藏字段............然后在发送数据时数据库将图像移动到最终文件夹,并将名称(来自隐藏字段)移动到数据库中..

【讨论】:

  • 是的。这就是我现在要做的。感谢您的确认。投了赞成票!
  • 对于移动文件,您可以使用 if( is_file($source) ) { rename($source,$destination); }
  • 我想我记得在 cmd 提示符下是这样的,重命名到另一个位置意味着副本,对吧?或者它更像是切割?谢谢,很好的信息。
【解决方案3】:

我的解决方案是使用 iframe 进行上传,并在 iframe 的返回页面中使用这样的 JavaScript

echo("<script type=\"text/javascript\">parent.insert('". $WHAT_YOU_WANT . "');</script>");

并且函数insert在父页面中定义,并且可以将字符串插入到您想要的位置。 obj_ta 是目标文本字段或其他内容。

//A simple input
function insert(str) {
    obj_ta.value = str;
}

//A textfield which accept some other user inputs
function insert(str) {
var startPos = obj_ta.selectionStart,
    val = obj_ta.value;
obj_ta.value = val.substring(0, startPos) + str + val.substring(startPos, obj_ta.value.length);
}

【讨论】:

  • 谢谢。但我不确定我明白这到底是做什么的。请纠正我:所以我必须在“父”表单中有一个隐藏的文本字段,该值将与 jquery 数据一起提供(来自 $image_path_and_name 的 ajax php)。所以它在提交“父”表单时被包含在内?是这样吗?
  • 我的解决方案是图片上传时带有iframe,iframe的parent对象是主页。如您所说,准备好的隐藏字段会在提交主表单时提交。
  • 我猜这可能适用于 path_and_name 字符串,我现在可以将它存储在数据库中。非常感谢。但我想这也意味着不再有临时文件夹?我将使用图像文件本身......并且不再将上传图像存储到永久位置,并清理临时文件夹中的临时图像?
  • 另一方面...我可以结合诗巫的建议和你的建议。将其复制到另一个文件夹,然后知道字符串...我可以将值放在隐藏字段中,以便稍后提交。谢谢。
  • 复制可以在iframe的请求中完成,所以没关系。
猜你喜欢
  • 1970-01-01
  • 2023-03-29
  • 1970-01-01
  • 2018-06-02
  • 2014-08-17
  • 2023-03-09
  • 2015-04-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多