0

キャンバスを画像ファイルとして保存しようとしています。ユーザーはダウンロードする画像形式(pngまたはjpg)を決定し、サーバーにファイルを保存せずにファイルを強制的にダウンロードします。

これは私がこれまでに得たものです:

JSスクリプト:

$.ajax(
{
type : "POST",
    url : "../php/download_image.php",
data:
    {
    format: 'png',
    dataURL: flattenCanvas.toDataURL('image/png')
    }
});

PHP:

    $data = $_POST['dataURL'];
    $format = $_POST['format'];
    $file = $file = md5(uniqid()) . '.'.$format;
    $uri =  substr($data,strpos($data,",")+1);
    file_put_contents($file, base64_decode($uri));

    if($format == 'png')
    {
        if (file_exists($file)) {
        header('Content-Description: File Transfer');
        header('Content-Type: image/png');
        header('Content-Disposition: attachment; filename='.basename($file));
        header('Content-Transfer-Encoding: binary');
        header('Expires: 0');
        header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
        header('Pragma: public');
        header('Content-Length: ' . filesize($file));
        readfile($file);
        exit;
        }
        else {
        echo "$file not found";
        }
    }

コードは強制的にダウンロードできず、なぜ機能しないのかわかりません。

どんな助けでも大歓迎です。

4

1 に答える 1

1

ファイルをサーバーに保存したくない場合は、サーバーとやり取りする必要はありません。here で説明されているように、ユーザーにキャンバスのコンテンツをダウンロードさせるだけです。

于 2012-08-15T12:53:40.257 に答える