使用特定名称替换服务器上的图像,直到达到某个限制,如果超过限制,则应在PHP中从第一个开始
我正在用PHP创建一个表单,用于在服务器中上载图像,该图像应上载到2个文件夹中,在第一个文件夹中,图像名称将从M1.jpg变为M5.jpg,如果我上载第六个图像,则图像名称应再次为M1.jpg,如果我再上载一个图像,则名称为M2.jpg,以此类推 在第二个文件夹中,无论图像名称如何,它都应该上载名称和当前时间 现在我所做的是,图像上传到两个文件夹中,在第一个文件夹中,图像名称上传为M1.jpg到M5.jpg,如果上传第六个或第七个图像,它将只替换第一个图像 这怎么可能,我真的不知道。 请先帮个忙,谢谢 Form.php使用特定名称替换服务器上的图像,直到达到某个限制,如果超过限制,则应在PHP中从第一个开始,php,Php,我正在用PHP创建一个表单,用于在服务器中上载图像,该图像应上载到2个文件夹中,在第一个文件夹中,图像名称将从M1.jpg变为M5.jpg,如果我上载第六个图像,则图像名称应再次为M1.jpg,如果我再上载一个图像,则名称为M2.jpg,以此类推 在第二个文件夹中,无论图像名称如何,它都应该上载名称和当前时间 现在我所做的是,图像上传到两个文件夹中,在第一个文件夹中,图像名称上传为M1.jpg到M5.jpg,如果上传第六个或第七个图像,它将只替换第一个图像 这怎么可能,我真的不知道。 请先帮个忙
<div class="sm-col-5">
<form action="upload.php" method="post" enctype="multipart/form-data">
<h2>OFFER IMG</h2>
<input type="file" name="file">
</br></br>
<input type="submit" value="Upload" >
</form>
</div>
<?php
$upimg=null;
if(isset($_GET['upimg'])){
if ($_GET['upimg']=='' ){
echo "Please Upload New Image";
}
else{
$upimg=$_GET['upimg'];
//scan "uploads" folder and display them accordingly
echo "<img src=\"http://notify/P_Log/".$upimg."\" alt=\"".$upimg."\" >";
}
}
?>
提供IMG
Upload.php
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$folder = "P_Logss";
$results = scandir('images');
unset($results[1]);
$mcount = count($results);
if($mcount <=5){
$mname = "M".$mcount++.'.jpg';
}
else {
$mname = 'M1.jpg';
$mcount++;
}
//$id=uniqid();
$name = $_FILES['file']['name'];
$tmpName = $_FILES['file']['tmp_name'];
$error = $_FILES['file']['error'];
$size = $_FILES['file']['size'];
$ext = strtolower(pathinfo($name, PATHINFO_EXTENSION));
switch ($error) {
case UPLOAD_ERR_OK:
$valid = true;
if ( !in_array($ext, array('jpg','jpeg','png','gif')) ) {
$valid = false;
$response = 'Invalid file extension.';
}
if ( $size/2048/2048 > 2 ) {
$valid = false;
$response = 'File size is exceeding maximum allowed size.';
}
if ($valid) {
$targetPath = dirname( __FILE__ ) . DIRECTORY_SEPARATOR. 'P_Logss' . DIRECTORY_SEPARATOR.$name;
$targetPath1 = dirname( __FILE__ ) . DIRECTORY_SEPARATOR. 'images' . DIRECTORY_SEPARATOR. $mname;
$upimg=$name;
move_uploaded_file($_FILES['file']['tmp_name'],$targetPath);
copy($targetPath,$targetPath1);
$targetPath = dirname( __FILE__ ) . DIRECTORY_SEPARATOR. 'images' . DIRECTORY_SEPARATOR. $mname;
header('Location: http://'.$_SERVER['HTTP_HOST'].'/notify/uploadimg.php?upimg='.$upimg);
exit;
}
break;
case UPLOAD_ERR_INI_SIZE:
$response = 'The uploaded file exceeds the upload_max_filesize directive in php.ini.';
break;
case UPLOAD_ERR_PARTIAL:
$response = 'The uploaded file was only partially uploaded.';
break;
case UPLOAD_ERR_NO_FILE:
$response = 'No file was uploaded.';
break;
case UPLOAD_ERR_NO_TMP_DIR:
$response = 'Missing a temporary folder. Introduced in PHP 4.3.10 and PHP 5.0.3.';
break;
case UPLOAD_ERR_CANT_WRITE:
$response = 'Failed to write file to disk. Introduced in PHP 5.1.0.';
break;
default:
$response = 'Unknown error';
break;
}
echo $response;
}
?>
问题在于如何获取图像名称,当计数大于5时,您总是使用“M1.jpg”,您需要使用:
通过这种方式,如果
$mcount
没有代码=没有帮助,我认为if循环存在问题..阿尔贝托,谢谢你的回答。我对第6张图片有一个疑问,但如果我上传图片,我们怎么知道这张图片的结果是7或8,以此类推。这是行不通的。我不知道我是否理解您的意思,但您在$mcount
中得到该值,使用$mcount
您得到目录中的图像总数,使用$mcount%5
您得到一个介于1和5之间的值。与计算第6个图像的方法相比,$result每次最多有5个图像。如果我上传第六个,它应该是自动的m1.jpg,所以第六个img不可靠。我重新阅读了你的代码,你有另一个错误,你正在计算“images”中的图像数,这个文件夹只能有5个图像,你需要计算“P_Logss”中的图像数。当然,谢谢。。它将一直工作到第9张图片,但当我上传第10张图片时,它将成为M0.jpg,因为模块运算符值变为0。
$mcount = count($results);
$mname = "M".((($count-1) % 5)+1).'.jpg';