亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Laravel 輸出服務器端生成的圖像的正確模式是什么?

Laravel 輸出服務器端生成的圖像的正確模式是什么?

PHP
天涯盡頭無女友 2023-08-19 17:33:53
我創建了一條路線,旨在跟蹤電子郵件打開情況Route::get('/stats/{token}/pixel-email-read.png',            'StatController@trackEmailRead')       ->name('stats.pixel-email-read');我在電子郵件建設中使用它,如下<img src="{{ route('stats.pixel-email-read', [ 'token' => $order->token ] ) }}">實際代碼正在生成 1x1 透明 pingpublic function trackEmailRead(Request $request, string $token)    {        header('Content-Type: image/png');        echo base64_decode('iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8Xw8AAoMBgDTD2qgAAAAASUVORK5CYII=');    }它適用于電子郵件,但不適用于瀏覽器。如果我打開瀏覽器我會得到這個我希望看到瀏覽器以圖像形式打開我的鏈接。我究竟做錯了什么?
查看完整描述

2 回答

?
慕虎7371278

TA貢獻1802條經驗 獲得超4個贊

如果通往圖像的路由和其他內容正確,請使用response()對象助手并加載 base64 圖像,最后附加內容類型。

想法是這樣的:

public function trackEmailRead(Request $request, string $token){
    $base64_img = base64_decode('iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8Xw8AAoMBgDTD2qgAAAAASUVORK5CYII=');    
    return response($base64_img)->header('Content-type', 'image/png');
}


查看完整回答
反對 回復 2023-08-19
?
HUH函數

TA貢獻1836條經驗 獲得超4個贊

我將凱文的答案標記為最佳答案,但我添加自己的問題只是為了將來的替代想法。


我提供了一個文件而不是回顯,就像 mrhn 的評論所建議的那樣


public function trackEmailRead(Request $request, string $token)

{

    $order = Order::where(['token' => $token])->first();

    if ($order && !$order->email_read_at) {

        $order->update([

            'email_read_at' => now()

        ]);

    }

    return response()->file(public_path() . '/images/pixel.png');

}

是的,我知道 ??!您認為我可以在 whereNull 條件下使用“email_read_at”進行直接更新,但是......在實際代碼中,在查詢和 if 之間,還有一些其他業務邏輯......


查看完整回答
反對 回復 2023-08-19
  • 2 回答
  • 0 關注
  • 147 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號