Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用特定名称替换服务器上的图像,直到达到某个限制,如果超过限制,则应在PHP中从第一个开始_Php - Fatal编程技术网

使用特定名称替换服务器上的图像,直到达到某个限制,如果超过限制,则应在PHP中从第一个开始

使用特定名称替换服务器上的图像,直到达到某个限制,如果超过限制,则应在PHP中从第一个开始,php,Php,我正在用PHP创建一个表单,用于在服务器中上载图像,该图像应上载到2个文件夹中,在第一个文件夹中,图像名称将从M1.jpg变为M5.jpg,如果我上载第六个图像,则图像名称应再次为M1.jpg,如果我再上载一个图像,则名称为M2.jpg,以此类推 在第二个文件夹中,无论图像名称如何,它都应该上载名称和当前时间 现在我所做的是,图像上传到两个文件夹中,在第一个文件夹中,图像名称上传为M1.jpg到M5.jpg,如果上传第六个或第七个图像,它将只替换第一个图像 这怎么可能,我真的不知道。 请先帮个忙

我正在用PHP创建一个表单,用于在服务器中上载图像,该图像应上载到2个文件夹中,在第一个文件夹中,图像名称将从M1.jpg变为M5.jpg,如果我上载第六个图像,则图像名称应再次为M1.jpg,如果我再上载一个图像,则名称为M2.jpg,以此类推

在第二个文件夹中,无论图像名称如何,它都应该上载名称和当前时间

现在我所做的是,图像上传到两个文件夹中,在第一个文件夹中,图像名称上传为M1.jpg到M5.jpg,如果上传第六个或第七个图像,它将只替换第一个图像

这怎么可能,我真的不知道。 请先帮个忙,谢谢

Form.php

 <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';