Php 上传后向文件添加后缀
我正在上传文件,我想添加一点功能-如果您上传的文件名称已经存在,请添加后缀(数字),例如file、file1、file2等 我在这里读到了一些解决方案,这是我到目前为止得到的:Php 上传后向文件添加后缀,php,file-upload,Php,File Upload,我正在上传文件,我想添加一点功能-如果您上传的文件名称已经存在,请添加后缀(数字),例如file、file1、file2等 我在这里读到了一些解决方案,这是我到目前为止得到的: $fileTmpLoc = $_FILES["file"]["tmp_name"]; $fileName = $_FILES["file"]["name"]; $upload_dir = $_SERVER['DOCUMENT_ROOT'] . "/projektOpole/upload/"; for ($i = 1
$fileTmpLoc = $_FILES["file"]["tmp_name"];
$fileName = $_FILES["file"]["name"];
$upload_dir = $_SERVER['DOCUMENT_ROOT'] . "/projektOpole/upload/";
for ($i = 1; $i <= 100; $i++) {
if (file_exists($upload_dir) && is_writable($upload_dir) && file_exists($upload_dir.$fileName)) {
$moveResult = move_uploaded_file($fileTmpLoc, $upload_dir.$fileName.$i);
}
}
$fileTmpLoc=$\u文件[“文件”][“tmp\u名称”];
$fileName=$_文件[“文件”][“名称”];
$upload\U dir=$\U服务器['DOCUMENT\u ROOT']。“/projektOpole/upload/”;
对于($i=1;$i),在文件名末尾添加后缀将使其位于文件扩展名之后。
下面将把你的后缀放在点之前。我将重写它以处理带有多个点的文件
$suffixed = explode('.', $fileName);
$moveResult = move_uploaded_file($fileTmpLoc, $upload_dir.$suffixed[0].$i.'.'.$suffixed[1]);
以下解决方案适用于具有多个点的文件
$moo = explode('.', $fileName);
$ext = array_pop($moo);
$fil = implode('', $moo);
$moo = $upload_dir . $fil . $i . '.' . $ext;
尝试下面的代码,它将适用于所有类型的文件类型
$fileTmpLoc = $_FILES["file"]["tmp_name"];
$fileName = $_FILES["file"]["name"];
$file_name=pathinfo($fileName,PATHINFO_FILENAME);
$file_type=pathinfo($fileName,PATHINFO_EXTENSION);
$rand=rand(0,9999);
$filename=$file_name.$rand.".".$file_type;
$upload_dir = $_SERVER['DOCUMENT_ROOT'] . "/projektOpole/upload/";
move_uploaded_file($fileTmpLoc, upload_dir.$fileName);
试试下面的代码
$fileTmpLoc = $_FILES["file"]["tmp_name"];
$fileName = $_FILES["file"]["name"];
获取文件的扩展名
$extension = end(explode('.', $fileName));
不带扩展名的文件名
$filenameWithoutExt = substr($fileName, 0, -(strlen($extension)+1));
$upload_dir = $_SERVER['DOCUMENT_ROOT'] . "/projektOpole/upload/";
$is_writable = 0;
如果目录是可写的,则设置标志
if(is_writable($upload_dir)){
$is_writable = 1;
}
if($is_writable){
for ($i = 1; $i <= 100; $i++) {
if (file_exists($upload_dir.$fileName)) {
$moveResult = copy($upload_dir.$fileName, $upload_dir.$filenameWithoutExt.$i.".".$extension);
}else{
$moveResult = move_uploaded_file($fileTmpLoc, $upload_dir.$fileName);
}
}
}
if(可写($upload\u dir)){
$is_writable=1;
}
如果($是可写的){
对于($i=1;$i,一个文件不能移动100次。可以复制,但不能移动;)对,我现在看到了,thnx:)不幸的是,结果是一样的-它第一次将文件保存在upload文件夹中,在另一次上载尝试后,我只能看到一个文件,没有任何扩展名。不,在上载的文件夹中不可能有相同的文件名。它现在根本不上载。此行:$filenameWithoutExt=substr($fileName,0,(strlen($extension)+1);给我一个语法错误(意外的“;”),有什么问题吗?抱歉-它现在确实上载了文件,但仍然-只有一次,没有新文件名的新文件。将行替换为thi$filenameWithoutExt=substr($fileName,0,(strlen($extension)+1));更新了代码。及其工作情况。请检查:)我已经检查了它和它的工作,复制整个代码再次运行。