在保存到服务器之前让用户验证文件

时间:2013-01-28 10:28:21

标签: php upload

我的脚本有一个用户上传pdf。我找到了一个pdf解析器,然后显示纯文本的第一部分。然后,用户将验证数据是否是正确的数据。如果是,则用户提交数据并将其保存到文件中。对于不是文件的数据,我总是使用不可见的表单字段将信息传递给执行页面。但是对于一个文件,我不确定最好的方法。

if ($_FILES["file"]["error"] > 0){
    echo "Error: " . $_FILES["file"]["error"] . "<br>";
}
else{
    $uploadedFile = $_FILES["file"]["tmp_name"];
    $result = pdf2text($uploadedFile);
    echo substr($result, 0, 200);
    echo "<BR>";
}

2 个答案:

答案 0 :(得分:2)

基于POST method uploads manual

  

该文件将从临时目录中删除   请求是否尚未移走或重命名。

您需要将tmp_file移动到应用程序内的缓存目录,然后根据验证为true或false将其删除,或将其移动到永久目录。

if ($_FILES["file"]["error"] > 0){
    echo "Error: " . $_FILES["file"]["error"] . "<br>";
}
else{
    $uploadedFile = $_FILES["file"]["tmp_name"];
    $tmp_file     = PATH_TO_CACHE_FOLDER . time(). $_FILES["file"]["name"]
    if (move_uploaded_file($_FILES['userfile']['tmp_name'], $tmp_file)) {
        $result = pdf2text($uploadedFile);
        echo substr($result, 0, 200);
        echo "<BR>";

    }
}

并在下一个脚本中

if(isValid() === true)
{
    $tmp_file = $_POST['tmp_file_name'];
    $file_name = $_POST['file_name'];
    move_uploaded_file($tmp_file, PERMANENT_PATH . $file_name);
}

这只是模拟代码,但应该给你一个更好的主意。

答案 1 :(得分:0)

使用以下命令移动上传的文件:

move_uploaded_file($ uploadedFile,“some / where / temp.pdf”);

...并创建一个包含新文件名的隐藏表单字段(some / where ...)。