0

所以问题是:

  1. 这是使用 Catalyst 框架的报告应用程序
  2. 在控制器中,我生成 QR 码图像并希望将此 URL(生成的图像)​​传递给特定的视图/前端?注意:我不想将二进制或 base64 数据从控制器传递给查看?
  3. 我应该在 $c->stash->{Images} = ??

任何想法,提示?请指导...

4

3 回答 3

1

就个人而言,我完全绕过了 View,并设置了 content-type 和 body 以在这种情况下直接从控制器返回图像。将图像写入文件,以便对服务器的另一个调用可以检索它似乎既不明智也不可扩展。最终,除非您正在做一些非常非正统的事情,否则您<img src="..."/>无论如何都会从页面请求图像。

package SomeController;
...
sub qrcode :Local {
    my ($self, $c, @args) = @_;
    my $png;
    eval { $png = ... } } ||
        $c->res->redirect($c->uri_for('/static/images/sorry_qrcode_failed.png'));
    $c->res->content_type('image/png');
    $c->res->body($png);
}

...以及您的页面请求

<img src="/somecontroller/qrcode/foo/bar" />

希望有帮助。

于 2012-08-01T00:41:22.277 回答
0

注意:我不想将二进制或 base64 数据从控制器传递给查看?

这是一个问题还是一个陈述,我不确定。我会将生成 QR 的信息传递给视图,视图将生成实际图像。

如果您不想通过 View 生成 QR,也不想传递任何二进制数据,那么只剩下 1 个选项:URL(http 或文件)。

于 2012-07-31T19:32:24.670 回答
0

我建议您使用 QRCode View for Catalyst:

Catalyst::View::GD::Barcode::QRcode

这样,二维码图像将自动从数据中生成,无需将图像存储在您的服务器上,占用空间。这就是我实际上所做的,它非常方便:)

于 2014-05-19T13:03:21.580 回答