1

画像を生成するためのphpコードは次のとおりです

<?php    

require('class/BCGColor.php');
require('class/BCGDrawing.php');   
require('class/BCGean8.barcode.php');

$font = new BCGFontFile('font/Arial.ttf', 18);
$color_black = new BCGColor(0, 0, 0);
$color_white = new BCGColor(255, 255, 255);

// Barcode Part
$code = new BCGean8();
$code->setScale(2);
$code->setThickness(30);
$code->setForegroundColor($color_black);
$code->setBackgroundColor($color_white);
$code->setFont($font);
$code->parse($_GET['code']);

// Drawing Part
$drawing = new BCGDrawing( '' , $color_white);
$drawing->setBarcode($code);
$drawing->draw();

header('Content-Type: image/png');

$drawing->finish(BCGDrawing::IMG_FORMAT_PNG);

header('Content-Disposition: attachment; filename=file.png');    

?>

これはHTMLです

<a href="#" >Click</a> <!-- I want to click here to download -->

とJS

$.ajax({
                url: "gen_barcode.php",
                type: 'GET',
                data: {code: '1234567'},
                success: function (data, textStatus, jqXHR) {
                    console.log(data)
                        $('#my_image').attr('src', 'gen_barcode.php?code=1234567');

                },
                error: function (jqXHR, textStatus, errorThrown) {
                    console.log(data)
                },

            })

            e.preventDefault();
        })

このスクリプトはブラウザに画像を表示しますが、ブラウザにダウンロードするように指示する方法です。私はすでにphpヘッダーでコンテンツの配置を使用しています。しかし、それはまだ機能していません

4

1 に答える 1

2

src画像要素のとして表示しているため、画像はディスクに保存されません。

ブラウザーが Content-Disposition を表示するのではなく、どこかに保存するようブラウザーに指示するようにするには、ブラウザーをその URL に送信する必要があります。

それを達成するために行うことができる最小の変更は、設定することですlocation

success: function (data, textStatus, jqXHR) {
    location = 'gen_barcode.php?code=1234567');    
},

しかし、すべての JavaScript を単純なリンクに置き換えた方が簡単です。

<a href="gen_barcode.php?code=1234567">Save image</a>
于 2015-01-14T13:30:19.843 に答える