PHP - 为文件上传添加唯一ID

时间:2015-08-28 14:02:49

标签: php mysql cakephp

只是想在事件中上传的任何文件中添加一个唯一的随机ID。

有没有办法将这个唯一生成的id添加到mysql中的列。

我在move_upload_file行上收到错误

<?php
    if($_SERVER['REQUEST_METHOD']=='POST')
    {
        $file_results = "";

    if (!$_FILES["file"]["name"])
    {
    $file_result = "No File Uploaded or Invalid File 
    Error Code: " . $_FILES["file"]["error"] . "<br>";
    echo $file_result;
    }   else {

    $file_results .=
    "Upload: " . $_FILES["file"] ["name"] . "<br>" .
    "Type: " . $_FILES["file"] ["type"] . "<br>" .
    "Size: " . ($_FILES["file"] ["size"] / 1024) . "<br>" .
    "Temp file: " .$_FILES["file"] ["tmp_name"] . "<br>";

    move_uploaded_file($_FILES['file']['tmp_name'],
    'uploads/'.uniquid(rand()).$_FILES['file']['name']);
    echo 'Thank Your For Submitting Your Item! It Will Be Availabel For You To Style With Soon!';

    };

2 个答案:

答案 0 :(得分:1)

对于fileszstem中的唯一文件名,我们有一个名为tempnam的方法,您可以阅读它here,您应该使用uniqid来获取唯一的文件名。

使用uniqid并不能保证您将获得真正随机的字符串,即使文档说明了这一点。

从手册:

  

此函数不会创建随机字符串或不可预测字符串。这个   函数不得用于安全目的。用一个   加密安全的随机函数/发生器和   加密安全散列函数以创建不可预测的安全性   的ID。

答案 1 :(得分:0)

根据Mjh的回答,我认为tempnam将是正确答案。我一直用:

md5( uniqid() . $fileName . rand(0,100);

到目前为止,我没有失败。 Md5为统一名称。