在身份验证之前在注册页面上载$ _FILES(IMAGE)

时间:2013-05-24 09:36:54

标签: php mysql ajax session

道德: 我正在使用AJAX在注册页面上传个人资料图片。

问题:当我上传图片时,它会自动更新数据库,而不需要页面请求,因此需要_iD(用户ID / uid)才能上传到数据库。因为访客没有可用的_iD 未注册,无法更新数据库。

寻找解决方案 *在按下提交按钮之前,如何在不需要更新我的数据库的情况下上传图片并预览它,因为AJAX需要自动更新我的数据库以提升带有_iD(用户ID)的文件。 我是否需要设置一个临时_iD,用于在请求提交表单后创建帐户?*

- > register.php

-----> http://pastebin.com/kZE4B105

- &GT * register_image_upload.php *

-----> http://pastebin.com/15n4pgPJ

- > 数据库表

-----> users

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|  _iD   | _iPassword |  _iUsername | _iEmail        |   _iProfilePicture  |
|  40    |    bcrypt  |    _iUser   | blah@gmail.com |         $PATH       | 
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

编辑:上传图片时表单上的当前错误。

Warning: move_uploaded_file(profile_pic/_iThumbnail/1369388350.jpg): failed to open stream: No such file or directory in C:\EasyPHP-12.1\www\public_html\register_image_upload.php on line 18

Warning: move_uploaded_file(): Unable to move 'C:\EasyPHP-12.1\tmp\php7EFB.tmp' to 'profile_pic/_iThumbnail/1369388350.jpg' in C:\EasyPHP-12.1\www\public_html\register_image_upload.php on line 18
failed

3 个答案:

答案 0 :(得分:1)

我知道这是一个非常古老的问题,但可能对其他人有用..

您正在使用ajax,因此您可以按以下方式执行操作 -

  • 成功上传后,通过ajax调用发送文件并获取图像文件名。

  • 更改图像的src(显示位置)ajax调用所获得的内容。

  • 您可以使用包含图像src的隐藏字段。

  • 现在,当表单发布时,从该隐藏字段中获取数据。并按照您在数据库中的操作进行操作..

如果您有任何疑惑,请发表评论,以便我再次讨论。

答案 1 :(得分:0)

为什么不在上传实际发生之前在客户端进行预览? 见thisstack post

答案 2 :(得分:0)

您可以将图像存储在临时目录中,并将会话中的图像链接存储在该目录中。用户完成注册后,将图像移至永久存储并更新用户配置文件。