0

私のウェブサイトでユーザーのアバターに使用されている画像がいくつかあります。たとえば、http://drksde.tk/images/avatar-Luxie.jpeg 誰かがアバター画像をダウンロードできるようにするリンクを追加したいリンクをクリックすると、[名前を付けて保存]ダイアログが表示されます。


問題は、画像が正しくダウンロードされないことですが、ダイアログが表示されます。アバターをダウンロードするためのリンクとコードは次のとおりです。

<?php
    $username = $_GET['username'];
    $size = $_GET['size'];
    $ext = $_GET['ext'];
    $border = $_GET['border'];
    $basename = basename($_SERVER['REQUEST_URI']);

    if(!isset($size)) { $size = 'small'; }
    if(!isset($ext)) { $ext = 'jpeg'; }
    if(!isset($border)) { $border = 'true'; }

$file = 'avatar-'.$size.'-'.$username.'.'.$ext;

    header('Content-Description: File Transfer');
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename='.$basename);
    header('Content-Transfer-Encoding: binary');
    header('Expires: 0');
    header('Cache-Control: must-revalidate');
    header('Pragma: public');
    #header('Content-Length: ' . filesize($file));
    ob_clean();
    flush();
    readfile($file);
    exit;
?>
4

1 に答える 1

1

こちらのphp.netマニュアルの例1を確認できます。

http://php.net/manual/en/function.readfile.php

画像のダウンロードを強制する方法を示しています。

スクリプトに配置して、次のimage.phpように使用できます

 <a href="http://example.com/image.php?user=123">download avatar image</a>

パラメータと一緒に使用して$_GET['user']、適切なユーザー画像ファイルを提供できます。

GET入力を検証することを忘れないでください。

于 2013-03-02T15:39:11.217 に答える