【问题标题】:Do I need a mysql database to upload images used temporarily?我需要一个 mysql 数据库来上传临时使用的图像吗?
【发布时间】:2014-10-13 13:43:55
【问题描述】:

在我的网站上,我希望能够上传、修改和打印图像。以后我不会使用这些图像,在离开“打印”页面之前让它们可用对我来说很重要。

我需要创建一个数据库来存储图像还是有其他(更简单)的方法来实现这一点?你能把这些东西存储在 RAM 中吗(请原谅我的菜鸟问题)?

基本上我需要上传图片,显示在屏幕上,玩弄它并打印出来。

【问题讨论】:

  • 直接存储在文件系统有什么问题?
  • 不,您实际上并不需要数据库来上传图像,除非您想存储图像路径和所有者等任何其他详细信息。只需将它们上传到目录(例如图片)
  • 您不需要数据库来存储图像,您可以将它们上传到临时文件夹并将路径存储到变量中。
  • 好的,谢谢,我很高兴听到这个消息。我之前只使用过一次文件上传(然后使用数据库),因此问题。
  • 您可以通过让 cronjob 运行并检查文件的创建日期时间戳并取消链接任何过期的来实现它。但最简单的方法是使用可以确定的数据库。

标签: php html mysql file-upload


【解决方案1】:

或者:

当用户进入页面并上传图片时,仅为该用户创建一个新文件夹并将相对路径存储在 cookie 中。这样,无论用户在做什么(离开、回来、重新加载等),您都可以随时获取用户文件夹。

根据 cmets 附加
不要使用纯文本值(我敢打赌,在使用 cookie 时没有人知道这一点)。

【讨论】:

  • 这样用户可以访问其他客户的图像。不太推荐。
  • 这个问题不是关于如何解决问题并获得最高的安全性。如果是这样,我建议在保存值之前使用加密。我还可以建议正确设置生命周期。我什至可以为他建立洞网站,但这不是问题。
【解决方案2】:

好吧,我会将图像上传到服务器上的文件夹(用户图像),然后将图像路径保存为 $_COOKIE 变量(这样您就可以将其传递给其他文件,例如 modify.php 或 print.php )。当会话数据不再可用时,您将使用 unlink() 函数删除文件。比如:

if( empty($_SESSION) ){
unlink( $_COOKIE['img_path'] );
setcookie( "img_path", true, time()-10 ); // set negative expire time in order to destroy the cookie
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-06
    • 2018-02-15
    • 1970-01-01
    • 1970-01-01
    • 2012-08-21
    • 1970-01-01
    • 2015-01-01
    • 2011-11-16
    相关资源
    最近更新 更多