php - php在上传之前重命名上传的文件,如果已经存在则覆盖
问题描述
目前使用此代码进行上传(但如果建议使用任何代码,我很乐意使用)..
<form style="margin-bottom:2px;" method="post" enctype="multipart/form-data" name="formUploadFile">
<label>Select CSV file to upload:</label>
<input type="file" name="files[]" multiple="multiple" /> <input type="submit" value="Upload CSV" name="btnSubmit"/>
</form>
<?php
if(isset($_POST["btnSubmit"]))
{
$errors = array();
$uploadedFiles = array();
$extension = array("csv");
$bytes = 1024;
$KB = 1024;
$totalBytes = $bytes * $KB;
$UploadFolder = "tmp_csv_store";
$counter = 0;
foreach($_FILES["files"]["tmp_name"] as $key=>$tmp_name){
$temp = $_FILES["files"]["tmp_name"][$key];
$name = $_FILES["files"]["name"][$key];
if(empty($temp))
{
break;
}
$counter++;
$UploadOk = true;
if($_FILES["files"]["size"][$key] > $totalBytes)
{
$UploadOk = false;
array_push($errors, $name." file size is larger than the 1 MB.");
}
$ext = pathinfo($name, PATHINFO_EXTENSION);
if(in_array($ext, $extension) == false){
$UploadOk = false;
array_push($errors, $name." invalid file type.");
}
if(file_exists($UploadFolder."/".$name) == true){
$UploadOk = false;
array_push($errors, $name." file already exists.");
}
if($UploadOk == true){
move_uploaded_file($temp,$UploadFolder."/".$name);
array_push($uploadedFiles, $name);
}
}
if($counter>0){
if(count($errors)>0)
{
echo "<b>Errors:</b>";
foreach($errors as $error)
{
echo " ".$error.",";
}
echo "<br/>";
}
if(count($uploadedFiles)>0){
echo "<b>Uploaded:</b>";
echo "=";
foreach($uploadedFiles as $fileName)
{
echo " ".$fileName.",";
}
echo "<br/>";
echo "<big><big>".count($uploadedFiles)." file has been successfully uploaded.</big></big>";
}
}
else{
echo "ERROR: Please press the browse button and select a CSV file to upload.";
}
}
?>
并且想对其进行修改,以便在上传文件之前将上传的文件从“any-file-name.csv”重命名为“foobar.csv”,如果文件已经存在,它也应该覆盖该文件。
作为奖励,该代码目前允许多文件上传,但我真的每次只需要一个文件,所以如果更改为只允许一个文件,它也可能会缩短一点。
提前致谢 :-)
解决方案
要添加您的自定义名称:
if($UploadOk == true){
$name = "foobar.csv";
move_uploaded_file($temp,$UploadFolder."/".$name);
array_push($uploadedFiles, $name);
}
对于单个文件,删除multiple="multiple"
:
<input type="file" name="files[]" />
推荐阅读
- java - 在 JavaFX 中单击 RadioButton 时显示列表
- jquery - 删除存储在数组中的 Google 地图标记
- javascript - 如何在 Selenium JS 中获取子节点的数量
- r - 如何在 R 中执行双尾 2 样本 t 检验
- rest - 如何将 Hyperledger Composer Rest API 发送到外部 IP
- r - 用 R 中的正值替换负值
- c - 创建链表队列时出现分段错误(核心转储)(连同堆栈函数)
- javascript - 隐藏时从模式中删除内容
- php - 滚动条的 Yii2 自定义错误处理程序 - 错误不应显示在浏览器中
- javascript - Javascript代码函数