Web服务显示PDF,删除文件一旦显示



我正在尝试使用web服务在浏览器中向用户显示pdf。一旦它们传入包含所需变量的URL。我的程序首先将PDF下载到本地存储,然后继续将其复制到流并显示它。一旦查看器能够查看PDF,我们希望在本地删除文件,这样我们就不会存储搜索到的每个文件。我已经设法完成了这个任务的大部分,但是我有问题删除文件,一旦它显示给用户。

甚至当我试图手动删除文件时,我收到"当前在Java SE二进制中使用"消息

下面的代码:

File testFile = new File("C:\Users\stebela\workspace\my-app\invoice"+invNum+".pdf");
try
{
    ServletOutputStream os = res.raw().getOutputStream();
    FileInputStream inputStr = new FileInputStream(testFile);
    IOUtils.copy(inputStr, os);
    os.close();
    inputStr.close();
    //finished settings
    res.status(200);
    testFile.delete();
} catch (IOException e)
{
    System.out.println(e.getMessage());
}

如果你不写入文件,你的代码应该可以工作。

如果调用inputStr.close();,则该文件不再被java使用,可以删除。

如果您的文件没有被任何其他程序使用,请检查。如果你重新启动你的电脑是最好的。

如果它仍然不工作,这将是有趣的,知道res是什么,如果你的文件得到发送。


我已经阅读了这部分文档,我想这应该可以解决你的问题。

它将文件读入字符串并更改png图像的标题。作为http正文,它使用文件的字符串。

确保,如果您更改响应类型,您必须将行res.type("image/png");更改为新的。

这里是最常见的

File testFile = null;
    try {
        testFile = new File("C:\Users\stebela\workspace\my-app\invoice"+invNum+".png");
    FileInputStream fin = new FileInputStream(testFile);
    int charAsInt = 0;
    String httpBody = "";
    while((charAsInt = fin.read()) != -1){
        httpBody +=(char)charAsInt;
    }
    fin.close();
    res.body(httpBody);
    res.type("image/png");
    res.status(200);
    testFile.delete();

} catch (FileNotFoundException e) {
    e.printStackTrace();
} catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}

相关内容

  • 没有找到相关文章

最新更新