为php创建的图像创建下载链接

时间:2013-11-04 13:29:52

标签: php download

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

  1. 访问者上传图片文件。

  2. 图片由脚本调整大小。

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

  4. 我的调整大小代码已准备就绪并且正常工作但我需要第三部分的帮助,即如何提供最近创建的图像的下载链接。以下是如何使用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。但这对我来说毫无用处,除非我理解正确的方法。另请注意,我的情况可能略有不同,因为这不是静态资源的下载链接。这里,每次请求都会动态创建要下载的图像。

    虽然我在努力寻找自己的解决方案,但是会很好,否则请为我提供一个路线图,说明应采取哪些步骤或完成这项工作所需的功能。提前致谢。

2 个答案:

答案 0 :(得分:2)

您可以使用合适的标题强行下载。

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

答案 1 :(得分:2)

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

第2步 - 用户点击下载链接。你只需要从Hanky웃Panky回答然后file_get_contents()发送标题。

相关问题