我想在我的服务器上存储图像并使用我的数据库对其进行索引,以便稍后我可以通过用户名或上传图像的人员收集的其他信息对其进行搜索。我以为我会让我的程序在上传时保存上传到数据库的位置。我很确定这是可能的,但作为一个nubie到PHP我需要一个地方开始。
答案 0 :(得分:2)
不仅要上传文件并将元数据存储到数据库中。确保您的应用程序不会被劫持。
按表单上传图片。
确保在将元数据存储到数据库时如何处理损坏的上传或上传失败。 (否则使用类似垃圾收集的东西,以避免耗尽磁盘空间或没有相关文件的数据库条目。)
始终只有注册用户才能上传,使用会话Cookie
确保您的服务器只接受有效会话的有效表单数据!!!
确保您在服务器上运行了病毒扫描程序,如果可能,请让您的脚本对其做出反应,但不要向外部显示。
<强>重命名!!!服务器上的文件,杀死文件类型后缀(将此信息存储在数据库中,包括要发送的mimetype),也许使用压缩。
永远不要让用户知道文件的存储位置!!! 使用下载脚本隐藏有关文件路径的信息!
修改强>
这不是一个完整的列表,只会让您对它的外观有所了解!
上传强>
构建像...一样的上传脚本。
构建类似的数据库表:
文件
uid, id, filename, real_filename, suffix, content_length, datetime_upload
扩展(可能性列表)
uid, id, suffix, mimetype
user-&gt;文件关系
uid, id, user_id, file_id
确保从有效的用户会话或退出
确保用户是否有权存储数据(角色模型)或退出
接收表格并检查表格数据是否有效(变量,验证码等)或退出
检查是否允许文件类型,可选择在最终保存之前进行二进制检查(标题中的文件类型)和/或文件的病毒检查
为文件构建一个空条目并接收file_id,否则出错
构建新文件名,f.e。
$new_filename = $file_id . '-' . md5($old_filename);
将数据存储到光盘
如果存储正常,请更新数据库条目,否则删除条目和错误
存储user_id-&gt; file_id
下载:
构建像...一样的下载脚本。
确保从有效的用户会话或退出
确保用户是否有权下载此数据(角色模型和用户 - >文件关系)或退出
获取旧文件名,大小和mimetype以执行某些发送操作
使用标题中存储的mimetype将文件发送到浏览器,以避免文件在客户端被接受并执行为不同的(f.e..exe)。添加正确的下载头,内容长度和缓存头。从正确的文件中添加二进制数据流。
答案 1 :(得分:1)
要遵循的步骤:
Theres有几种方法可以解决这个问题 - 使用AJAX上传器,或者只是选择表单中的图像,只是将图像与用户数据一起保存......
但是AJAX的简单过程就是......
否则