在存储在服务器PHP中之前重命名文件

时间:2014-12-27 06:24:37

标签: php android

我需要知道代码如何在php脚本上传到我的服务器之前重命名文件。我会发布我的php代码。

我需要它,因为我正在从手机上传图像,我不希望它被覆盖。

我可以实现吗?

<?php

$file_path = "uploads/";

$file_path = $file_path . basename( $_FILES['uploaded_file']['name']);
if(move_uploaded_file($_FILES['uploaded_file']['tmp_name'], $file_path)) {
    echo "success";
} else{
    echo "fail";
}
?>

3 个答案:

答案 0 :(得分:0)

要在Android中重命名文件,您可以执行以下操作:

String file_path = <file path off your existing file you want to rename>
File from = new File(file_path,"from.txt");
File to = new File(file_path,"to.txt");
from.renameTo(to);

此代码适用于存储在内部或外部存储中的文件。只是为了写入外部存储器,记住你需要将android.permission.WRITE_EXTERNAL_STORAGE添加到你的Android清单中。

答案 1 :(得分:0)

编写如下代码。

    $filename = $_FILES['upload_file']['name'];
    $newname = 'alteredtext'.$filename; // you can also generate random number and concat on start.
    $tmp_path = $_FILES['upload_file']['tmp_name'];
    if(move_uploaded_file($mp_path, $newname)) {
        echo "success";
    } else{
       echo "fail";
    }

答案 2 :(得分:0)

移动文件时,您不需要使用$ _FILES数组中传递的名称。您可以创建所需的任何名称(假设路径有效)并将其作为move_uploaded_file的第二个参数传递。如果你想要一个半随机的名字,你可以生成一个随机数,然后哈希它或者什么来创建文件名。

如果要先检查,如果文件存在,则将其重命名为带有数字后缀,您可以这样做:

<?php

$base_path = "uploads/";

$file_path = $base_path . basename( $_FILES['uploaded_file']['name']);
if(file_exists($file_path)) {
    $ctr = 0;
    do { // increment an index to append to the filepath
        $ctr++;
        $file_path = $base_path . basename( $_FILES['uploaded_file']['name']) . "_$ctr";
    } while(file_exists($file_path));
}

if(move_uploaded_file($_FILES['uploaded_file']['tmp_name'], $file_path)) {
    echo "success";
} else{
    echo "fail";
}
?> 

上面的代码段会一直递增,直到找到一个不存在的文件名。当然,您需要添加一些边界和错误检查,而上面的代码段演示了这个概念,它并不是完全可以生产。