php - 允许上传原始文件名
问题描述
所以我正在使用树莓派,并希望将它用作我可以上传和下载任何类型的文件的地方,具有任何类型的扩展名。
这是我的代码
<!DOCTYPE html>
<html>
<body>
<form action="upload.php" method="post" enctype="multipart/form-data">
<input type="file" name="file">
<input type="submit" value="upload">
</form>
<?php
if(isset($_FILES['file'])) {
$file = $_FILES['file'];
$file_name = $file['name'];
$file_tmp = $file['tmp_name'];
$file_size = $file['size'];
$file_error = $file['error'];
$file_ext = explode('.', $file_name);
$file_ext = strtolower(end($file_ext));
$allowed = array('txt', 'jpg');
if(in_array($file_ext, $allowed)) {
if($file_error === 0) {
if($file_size <= 1073741824) {
$file_name_new = uniqid('', true) . '.' . $file_ext;
$file_destination = './files/' . $file_name_new;
if(move_uploaded_file($file_tmp, $file_destination)) {
echo $file_destination;
}
}
}
}
}
?>
</body>
</html>
它工作得很好但是当文件上传时我得到随机文件名而不是原始名称我如何才能保持上传的原始文件名不是随机名称!
解决方案
$file_name_new = uniqid('', true) . '.' . $file_ext;
$file_destination = './files/' . $file_name_new;
在上面,您正在定义文件的新名称。只需给文件他的名字(你在$file_name
变量中有它)。
//$file_name_new = uniqid('', true) . '.' . $file_ext;
$file_name_new = $file_name;
$file_destination = './files/' . $file_name_new;
在这一点$file_name_new
上,$file_name
你可以直接写:
$file_destination = './files/' . $file_name;