如何使用PHP上传,存档和重命名文件?

时间:2011-05-26 00:05:12

标签: php file-upload rename archive

是否可以使用PHP上传两个不同的文件并使用新文件名压缩存档?以下是我创建的表格。

 <form action="upload.php" method="post" enctype="multipart/form-data" name="form1" id="form1">
        <h1>Submit here</h1>

    <p>

    <label for="cat">category</label>

    <select id="cat" name="cat" value="">Category</option>

    <option value="csr2050">Cns</option>

    <option value="npp2023">npp</option>

    </select>

    </p><p>

        <label for="fsheet">fsheet</label>
    <input name="fsheet" type="file" id="fsheet" />
    </p><p>

        <label for="report">Report</label>
    <input name="report" type="file" id="report" />
    </p><p>

    <input type="submit" name="Submit" id="Submit" value="upload" />
    </form>

这里我想要的是,如何编写upload.php,可以创建所选两个文件的zip存档文件,并将其重命名为选定的类别值,然后将其上传到/ upload文件夹?

1 个答案:

答案 0 :(得分:0)

在PHP中也可以轻松完成。但是,这里有3个功能

  1. 上传多个文件
  2. 压缩文件
  3. 重命名文件
  4. 每个都是不同的解决方案,我的代码可能需要根据您的变量进行更改, 您可以看到zip实用程序链接以获取详细信息。您还可以在Stackoverflow中获取每个任务的帖子数量,例如Zip文件

    PHP ZIP files on the fly

    上传多个文件

    Upload two files at once

    上传

    <?
    
    $file_name1 = $_FILES['fsheet']['name'];
    $file_name1 = stripslashes($file_name1);
    $file_name1 = str_replace("'","",$file_name1);
    $copy = copy($_FILES['fsheet']['tmp_name'],$file_name1);
    
     // prompt if successfully copied
     if($copy){
     echo "$file_name1 | uploaded sucessfully!<br>";
     }else{
     echo "$file_name1 | could not be uploaded!<br>";
     }
    
    
    $file_name2 = $_FILES['report']['name'];
    $file_name2 = stripslashes($file_name2);
    $file_name2 = str_replace("'","",$file_name2);
    $copy = copy($_FILES['report']['tmp_name'],$file_name2);
    
     // prompt if successfully copied
     if($copy){
     echo "$file_name2 | uploaded sucessfully!<br>";
     }else{
     echo "$file_name2 | could not be uploaded!<br>";
     }
    
    ?>
    

    ** Zip ** 首先从下载zip实用程序类 http://www.phpclasses.org/browse/file/9524.html

    <?php
        $directoryToZip="secret"; // 
                $outputDir = $_POST['rootfolder'];
                //$outputDir="$folder"; //Replace "/" with the name of the desired output directory.
                $zipName="backup.zip";
    
                include_once("zip/CreateZipFile.inc.php");
                $createZipFile=new CreateZipFile;
                /*
                // Code to Zip a single file
                $createZipFile->addDirectory($outputDir);
                $fileContents=file_get_contents($fileToZip);
                $createZipFile->addFile($fileContents, $outputDir.$fileToZip);
                */
    
                //Code toZip a directory and all its files/subdirectories
                $createZipFile->zipDirectory($directoryToZip,$outputDir);
    
    
                $fd=fopen($zipName, "wb");
                $out=fwrite($fd,$createZipFile->getZippedfile());
                fclose($fd);
                $msg = "Files backup successfully";
                //$createZipFile->forceDownload($zipName);
                $trgtName = date("F-Y-h-i-s"). ".zip";
                copy ($zipName,$outputDir."/".$trgtName);
                @unlink($zipName);
    
    
        ?>