Heim  >  Artikel  >  Backend-Entwicklung  >  Detailliertes Beispiel für die Neudefinition des Namens einer hochgeladenen Datei

Detailliertes Beispiel für die Neudefinition des Namens einer hochgeladenen Datei

怪我咯
怪我咯Original
2017-05-02 11:28:242715Durchsuche

Beim Hochladen von Dateien müssen Sie den Pfad der Upload-Datei angeben. Wenn Sie jedoch mit unterschiedlichen Dateien konfrontiert werden, die von einer großen Anzahl von Benutzern hochgeladen werden, ist es unvermeidlich, dass es zu doppelten Namen kommt, was zu einer Dateiersetzung führt. Dies führt zu Dateiverlusten, daher ist es wichtig, die Dateien neu zu definieren. Dieses Kapitel führt Sie durch den Vorgang. Wie definiere ich den Namen der hochgeladenen Datei?

Zuerst fangen wir den Namen der hochgeladenen Datei über die Funktion strstr() ab, um das Suffix der hochgeladenen Datei zu erhalten.

Erhalten Sie dann den aktuellen Zeitstempel des Systems über die Funktion time(), definieren Sie den Namen der hochgeladenen Datei neu

und verwenden Sie dann die Funktion move_uploaded_file(), um die Datei hochzuladen.

Vor dem Ausführen des Datei-Uploads sollte die Funktion is_uploaded_file() verwendet werden, um festzustellen, ob die angegebene Datei über HTTP POST hochgeladen wurde, um mögliche Angriffe und die illegale Verwaltung von Dateien zu verhindern, die nicht über Skripte interagiert werden können. Wenn ja, wird ein true zurückgegeben.

is_uploaded_file()-Funktion

is_uploaded_file()-Funktion bestimmt, ob die angegebene Datei über HTTP POST hochgeladen wird. Die Syntax lautet wie folgt:

is_uploaded_file(filename)

Der Parameter filename muss eine Variable ähnlich $_FILES['filename']['tmp_name'] angeben. Der vom Client hochgeladene Dateiname kann nicht verwendet werden $_FILES['filename']['name']

Detailliertes Beispiel für die Neudefinition des Namens einer hochgeladenen DateiDurch die Verwendung der Funktion is_uploaded_file() zur Beurteilung hochgeladener Dateien kann sichergestellt werden, dass böswillige Benutzer Skripte nicht dazu verleiten können, auf unzugängliche Dateien wie /etc/passwd zuzugreifen.

move_uploaded_file()-Funktion

Die move_uploaded_file()-Funktion lädt eine Datei an den angegebenen Speicherort auf dem Server hoch. Gibt bei Erfolg true zurück. Andernfalls wird „false“ zurückgegeben. Die Syntax lautet wie folgt:

move_uploaded_file(filename,destination)

Der Parameter Dateiname gibt den temporären Dateinamen der hochgeladenen Datei an, d. h. $_FILES[tmp_name]; Ziel bezieht sich auf den neuen Pfad und Namen der nach dem Hochladen gespeicherten Datei. Wenn der Parameter Dateiname keine legal hochgeladene Datei ist, wird kein Vorgang ausgeführt.

move_uploaded_file() gibt false zurück, wenn der Parameter Dateiname eine legal hochgeladene Datei ist Wenn es aus irgendeinem Grund nicht verschoben werden kann, wird kein Vorgang ausgeführt. move_uploaded_file() gibt „False“ zurück und es wird eine Warnmeldung ausgegeben.

Verwenden Sie abschließend die Rand-Funktion und verwenden Sie die zufällige Ganzzahl, die sie zufällig generiert, als neuen Namen der hochgeladenen Datei.

Anwendungsbeispiel

In diesem Beispiel wird der Name der hochgeladenen Datei neu definiert. Wählen Sie den Namen der Datei aus, die hochgeladen werden soll Wenn Sie die Datei hochgeladen haben und auf die Schaltfläche „Hochladen“ klicken, wird die Datei in den Upfile-Ordner unter dem im Programm angegebenen lokalen Pfad hochgeladen und der Dateiname wird neu definiert.

Detailliertes Beispiel für die Neudefinition des Namens einer hochgeladenen Datei

Der Schlüsselcode für dieses Beispiel lautet wie folgt:

<?PHP
header("content-type:text/html;charset=utf-8");
if(!empty($_FILES[up_picture][name])){                                       //判断上传文件是否为空
    if($_FILES[&#39;up_picture&#39;][&#39;error&#39;]>0){                                    //判断文件是否可以上传到服务器
        echo "上传错误";
        switch($_FILES[&#39;up_picture&#39;][&#39;error&#39;]){
            case 1:
                echo "上传文件大小超出配置文件规定值";
                break;
            case 2:
                echo "上传文件大小超出表单中约定值";
                break;
            case 3:
                echo "上传文件不全";
                break;
            case 4:
                echo "没有上传文件";
                break;
        }
    }else{
        if(!is_dir("./upfile/")){                                           //判断指定目录是否存在
            mkdir("./upfile/");                                             //创建目录
        }
        $path=&#39;./upfile/&#39;.time().strstr($_FILES[&#39;up_picture&#39;][&#39;name&#39;],&#39;.&#39;);//定义文件名称和存储位置
        if(is_uploaded_file($_FILES[&#39;up_picture&#39;][&#39;tmp_name&#39;])){           //判断是否通过HTTP POST上传的
            if(!move_uploaded_file($_FILES[&#39;up_picture&#39;][&#39;tmp_name&#39;],$path)){       //执行上传
                echo "上传失败";
            }else{
                echo "文件".time().$_FILES[&#39;up_picture&#39;][&#39;name&#39;]."上传成功,大小为:".$_FILES[&#39;up_picture&#39;][&#39;size&#39;];
            }
        }else{
            echo "上传文件".$_FILES[&#39;up_picture&#39;][&#39;name&#39;]."不合法!";
        }
    }
}
?>

Detailliertes Beispiel für die Neudefinition des Namens einer hochgeladenen DateiDas Definieren des Namens der hochgeladenen Datei muss eine unverzichtbare Funktion im Datei-Upload-Programm sein. Dadurch können Sie vermeiden, dass mehrere Dateien mit demselben Namen ersetzt werden Dateien mit demselben Inhalt. Weitere Informationen finden Sie unter Thema zur PHP-Dateiverarbeitung

[Empfohlene verwandte Artikel]

PHP-Datei-Upload – detaillierte Erläuterung der Verwendung von move_uploaded_file ()-Funktion

Das obige ist der detaillierte Inhalt vonDetailliertes Beispiel für die Neudefinition des Namens einer hochgeladenen Datei. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn