1

我一直在尝试上传文件move_uploaded_file一段时间,但由于某种原因发生了一些奇怪的事情。这是我现在正在使用的代码:

$rand = rand();
$_SESSION['rand'] = $rand;

$uploaddir = "csv/";  
$uploadfile = $uploaddir . $_SESSION['rand'] . basename($_FILES['file']['name']);
$_SESSION['filenaam'] = $_SESSION['rand'].$_FILES['file']['name'];

if(move_uploaded_file($_FILES['file']['tmp_name'], $uploadfile)) 
    {
        echo "File is valid, and was successfully uploaded.\n";
    } 
    else
    {
        echo "Upload failed";
    }

当我尝试上传$uploadfile它时,它很顺利,我可以在 csv 地图中找到它,但有两个问题。第一个是即使文件被上传,我总是得到else respond(echo "Upload failed outlook";). 第二个是我试图保存的文件的名称$_SESSION['filenaam']不同,由于某种原因,rand 函数被重用而不是第一个的结果。

有人可以帮我解决这个问题吗?

4

2 回答 2

1

这样做可能比随机使用 uniqid(); 更好。相反,每次调用 rand() 函数时都会生成不同的值。

于 2013-09-24T14:08:16.977 回答
0

要解决第二个问题,您可以这样做:

低于 PHP5.2:

if(!isset($_SESSION['rand'])) { 
    rand();
}

PHP5.3以上

$_SESSION['rand'] = ($_SESSION['rand']) ?: rand() ;
于 2013-09-24T14:10:48.643 回答