如何在文件上传中附加mysql_insert_id?

时间:2010-09-21 10:11:05

标签: php

我们如何在文件上传中附加mysql_insert_id(),以便每个文件都有唯一的名称?我确实尝试了以下代码,但没有奏效。请指教。 Yhanks

$id = mysql_insert_id();
$dest = trim($uploaddir. $id. basename($_FILES['photo']['name']));

3 个答案:

答案 0 :(得分:2)

这是一个问题,您可以在询问之前采取一些措施来解决自己。对于初学者,打印$ id。它是有效的ID吗?或者是假(可能是)。然后回显$ uploaddir,$ _FILES ['photo'] ['name']和basename($ _ FILES ['photo'] ['name'])。最后,回应$ dest。如果你不通过这些简单的调试练习来解决错误,我会感到很惊讶。

答案 1 :(得分:2)

这应该是

if(false !== ($id = mysql_insert_id())
{
    $dest = sprintf("%s%d_%s",$uploaddir,$id,trim(basename($_FILES['photo']['name']));
    if(!file_exists($dest))
    {
        //move_uploaded_file
    }else
    {
        //You cant program :(
    }
}else
{
    //DB Error.
}

您应该编写代码,以便在添加到数据库之前将文件添加到目录中。

  • $_FILES
  • 获取数据
  • 清理数据并验证文件Size,Ext,Headers,Name
  • 确保该文件尚不存在
  • 生成UniqueID并从静态字符串创建哈希,示例1
  • 将文件存储在服务器上并验证其移动确定
  • 将元数据与唯一ID和文件位置
  • 一起添加到数据库
  • 让你的叔叔吃掉。

示例1:

define('FILE_NAME_SALT','MySecret$alt');

$uid = md5(rand(0,100) . $uid . FILE_NAME_SALT . $FileName);

存储HASH.ext

等文件

答案 2 :(得分:1)

您可以使用散列函数来执行此操作。例如,md5或sha1是唯一文件名的不错选择。您可以使用md5()函数返回的文件名给定文件的初始名称。