为 PHP 创建的映像创建下载链接


create download link for php created image

我正在研究一些调整大小并下载图像类型的php脚本,其中事件必须以以下方式发生:

  1. 访客上传图像文件。

  2. 脚本调整图像大小。

  3. 调整大小的图像的下载链接将显示在前端。

我的调整大小代码已准备就绪并正常工作,但我需要第三部分的帮助,即如何提供指向最近创建的图像的下载链接。以下是如何在 php 脚本中创建调整大小的图像的要点。

<?php  
       //normal validation stuff happens here
       //resizing stuff happens here
    //here is last part of the code that creates the resized image
    $filename = uniqid();
    $file = 'uploads/'.$filename.'.jpeg';   
    imagejpeg($new, $file, 80); 
    imagedestroy($new);

此下载链接必须作为下载框提示,而不是打开新选项卡。 Headers我知道我们需要提供下载链接。但这对我来说毫无用处,除非我了解正确的方法。另请理解,我的情况可能略有不同,因为这不是静态资源的下载链接。在这里,每次都会根据每个请求动态创建要下载的图像。

当我自己挣扎时,解决方案会很棒,否则请为我提供应该采取哪些步骤或完成此操作所需的功能的路线图。提前谢谢。

步骤1 - 用户正在上传图片,并且您正在使用新的唯一名称(也许是time()中的md5)将其保存在服务器上(您现在可以调整其大小)?在响应页面上,您可以提供这样的链接www.mypage.com/downloadimg.php?fileid=54gj6hg45h654g其中最后一部分是生成的文件名。

第 2 步 - 用户单击下载链接。您只需要从 Hanky 웃 Panky 答案发送标头,然后file_get_contents() .

您可以使用正确的标头强制下载。

header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="'.basename($file).'"');
header('Content-Transfer-Encoding: binary');
header('Connection: Keep-Alive');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: ' . filesize($file));