php - 自定义保存上传的文件名
问题描述
我使用以下代码上传文件:
<?php
// Check if the form was submitted
if($_SERVER["REQUEST_METHOD"] == "POST"){
// Check if file was uploaded without errors
if(isset($_FILES["photo"]) && $_FILES["photo"]["error"] == 0){
$allowed = array("jpg" => "image/jpg", "jpeg" => "image/jpeg", "gif" => "image/gif", "png" => "image/png");
$filename = $_FILES["photo"]["name"];
$filetype = $_FILES["photo"]["type"];
$filesize = $_FILES["photo"]["size"];
// Verify file extension
$ext = pathinfo($filename, PATHINFO_EXTENSION);
if(!array_key_exists($ext, $allowed)) die("Error: Please select a valid file format.");
// Verify file size - 5MB maximum
$maxsize = 5 * 1024 * 1024;
if($filesize > $maxsize) die("Error: File size is larger than the allowed limit.");
// Verify MYME type of the file
if(in_array($filetype, $allowed)){
// Check whether file exists before uploading it
if(file_exists("upload/" . $filename)){
echo $filename . " is already exists.";
} else{
move_uploaded_file($_FILES["photo"]["tmp_name"], "upload/" . $filename);
echo "Your file was uploaded successfully.";
}
} else{
echo "Error: There was a problem uploading your file. Please try again.";
}
} else{
echo "Error: " . $_FILES["photo"]["error"];
}
}
?>
我想用“1.jpg”名称保存上传的文件。如果“upload”文件夹中已经存在,则使用“2.jpg”保存,如果“upload”文件夹中已经存在“2.jpg”文件,则等待另一个脚本清除其中一个。如果一段时间后(大约 120 秒),这两个文件都没有被删除,它将显示一条错误消息。我应该使用什么代码?
解决方案
在 PHP 中,您的代码在处理请求时工作。您不能暂停脚本并等到另一个请求。为了实现您的任务,如果名称为 1 或 2 的文件存在,您可以将文件存储在临时位置并响应客户端。然后另一个脚本应该处理来自客户端的另一个请求,其中包含客户端选择的信息。第二个脚本可以删除旧文件并将新文件复制到指定位置。
推荐阅读
- github - 使用 GitHub 的 API 获取每次提交(在分支上)添加/删除的代码行?
- git - 如何在 Visual Studio 2019 中忽略文件夹 bin obj .vs
- r - 使用正则表达式查找最后一个周期的左侧和右侧的值并在 dplyr 中分隔
- python-3.x - 如何在使用 EOF 异常中断初始 input() 后启动新的 input() 实例?
- c++ - 在着色器内从 glOrtho 切换到 MVP 矩阵后什么都没有绘制
- python-3.x - 如何按每个数组中的第一个元素对数组数组进行冒泡排序?
- linux - 我想将一个脚本的输出通过管道传输到将独立处理第一个脚本的输出的不同脚本?
- node.js - Vuetify v-form post 不发送数据
- python - 双向 OneToOne 关系 - Django
- r - 如何在 R 的单个图中绘制一个图以查看两个独立样本的 SEM?