php - PHP - 将文件上传到目录并将文件扩展名添加到底部时的随机文件名?
问题描述
我使用 php 和 html 以及 java 制作了一个 uload 系统,但我担心重复文件。如何让它以随机名称保存并添加其扩展名?
<?php
if(isset($_FILES['image'])){
$errors= array();
$test = uniqid()
$file_name = ['image']['name'];
$file_size =$_FILES['image']['size'];
$file_tmp =$_FILES['image']['tmp_name'];
$file_type=$_FILES['image']['type'];
$file_ext=strtolower(end(explode('.',$_FILES['image']['name'])));
$extensions= array("jpeg","jpg","png","rbxl","mp4","mp3");
if(in_array($file_ext,$extensions)=== false){
$errors[]="extension not allowed";
}
if($file_size > 600000000){
$errors[]='File size must be excately 600 MB';
}
if(empty($errors)==true){
move_uploaded_file($file_tmp,"images/".$file_name);
echo "https://glotech.cf/images/";
print_r($file_name);
}else{
print_r($errors);
}
}
?>
window.addEventListener("paste", e => {
if (e.clipboardData.files.length > 0) {
const fileImput = document.querySelector("#myFile");
fileImput.files = e.clipboardData.files;
}
});
<form action="/test.php" method="post" enctype="multipart/form-data">
<input type="file" name="image" id="myFile">
<input type="submit" />
</form>
我怎样才能让它用随机名称保存?
解决方案
有一些函数可以生成多种语言的随机字符串。在 PHP 中,您可以使用md5()
and uniqid()
,例如。
您的代码正在使用原始文件的名称上传文件。因此,如果您想避免重复文件名,只需生成一个唯一代码并包含到文件名中。此外,您可以使用该time()
功能为文件名添加时间戳,这将防止重复的文件名。
$file_name = time() . "-" . $_FILES['image']['name'];
// output: "1615273926-filename.jpg"
如果要颠倒上例中文件名和时间戳的顺序,可以使用pathinfo()
function. 看:
$file_name_pathinfo = pathinfo($_FILES['image']['name']);
$file_name = $file_name_pathinfo['basename'] . "-" . time() . "." . $file_name_pathinfo['extension'];
// output: "filename-1615273926.jpg"
这应该可以防止名称重复的文件。
学到更多:
推荐阅读
- node.js - Node.js completely remove file in a running script
- java - design problem with starting foreground service from other foreground service
- javascript - In a Leaflet Map, how to make the popup scroll between different markers at the exact same coordinates?
- apache-kafka-streams - ksqlDB UDF accepting Structs matching any schema
- python - How to combine queue and join on the play command? - Discord.py
- wordpress - Uploading Image to WordPress media using RestSharp
- r - 根据 R 中的模式出现在列表中的 Gsub
- arrays - 如何找到给定算法的比较次数和复杂度
- python - 从 namedtuple 作为 args 传递信息的更好方法
- python - 从数据框列获取最相似的值到特定的字符串python