一开始 - 对不起我的英语。
我正在用java开发一个播放应用程序并将其部署到heroku。我喜欢创建一张图片(准确地说是二维码),将其临时存储并显示在下一页上。我确实知道 herokus 临时文件系统,但如果我理解正确,在 cedar 堆栈上,我可以在任何我喜欢的地方创建文件,只要可以,它们不会被存储很长时间。该应用程序只需要生成一个QR,我扫描它,该文件可能会被删除。
好像没有创建文件。关于如何设法临时保存和显示我的 QR 的任何想法?
控制器
public class Application extends Controller {
private static String workingDirectory = "public/images/";
public static Result qrCode() {
String msg = "I am a QR-String";
BufferedImage image = (BufferedImage) QR.stringToImage(msg);
String imgPath = workingDirectory+"posQR.png";
try{
File outputfile = new File(imgPath);
ImageIO.write(image,"png",outputfile);
}catch(IOException e){
e.printStackTrace();
}
return ok(views.html.qrCode.render());
}
}
查看二维码
<img src="@routes.Assets.at("images/posQR.png")">
编辑 1
将图像存储为 tempFile 并将其传递给视图。在 heroku 本地视图包含确切的绝对路径,但图像不会加载。有什么想法吗?
控制器
public class Application extends Controller {
private static String workingDirectory = "public/images/";
public static Result qrCode() {
String msg = "I am a QR-String";
BufferedImage image = (BufferedImage) QR.stringToImage(msg);
File outputfile = null;
String imgPath = workingDirectory+"posQR.png";
try{
outputfile = File.createTempFile("posQR",".png");
ImageIO.write(image,"png",outputfile);
}catch(IOException e){
e.printStackTrace();
}
return ok(views.html.qrCode.render(outputfile.getAbsolutePath()));
}
查看二维码
@(qrPath: String)
...
<img id="qr" src=@qrPath>