下载后重命名源文件在php中

时间:2018-02-21 09:56:27

标签: php

我从我的上传/文档中循环.jpg文件并将其显示在我的页面中然后我点击下载逐个文件,然后我从文件夹uploads \ document \中的源文件下载.jpg,我的文件夹中的真实文件将被重命名为其他名称。

我试试这些:

<?php
foreach (glob('uploads/document/' . '/*.{jpg}', GLOB_BRACE) as $file) {
    echo '<a class="snapchat" download="' . basename($file)  . '" href="/uploads/document' . '/' . basename($file) . '">' . basename($file) .
        '</a><br/>';

        rename('/uploads/document' . '/' . basename($file) ,'Mynew' );

}
?>

这些解决方案?

1 个答案:

答案 0 :(得分:1)

首先:您无法在下载前重命名源文件,因此需要在下载后重命名

可以PHP header() Function执行此操作所需的另一个php脚本处理下载和重命名文件,
赞:

1-主要PHP

<?php
$dir = 'files/';//uploads/document/
foreach (glob("$dir*.{jpg}", GLOB_BRACE) as $file) {
    echo '<a class="snapchat" download="'.basename($file).'" href="download.php?fn='.basename($file).'">'.basename($file).'</a><br/>';
}
?>

2 - download.php

<?php
$dir = 'files/';//uploads/document/
$file = $dir.$_GET['fn'];
if (file_exists($file))
{
    $type = 'image/jpeg';
    header('Content-Type:'.$type);
    header('Content-Length: ' . filesize($file));
    readfile($file);
    rename($file, $dir."mynewName");
    exit();
}
else // file not exists Or has been downloaded before
{
    header('HTTP/1.0 403 Forbidden');/* Retern Forbidden */
    /*OR*/ 
    //header("Location: 404.php?".$file); /* Redirect browser */
    exit();
}
?>