【问题标题】:write FileOutputStream (received as String) to file将 FileOutputStream(作为字符串接收)写入文件
【发布时间】:2017-10-18 19:54:24
【问题描述】:

我在我的 servlet 中以字符串形式接收 FileOutputStream,如何将其写入文件。

我尝试将字符串转换为字节,然后将其分配给新的 FileOutputStream,它会生成文件但说格式已损坏。

我尝试了各种代码,但没有一个有效。

File file = new File("d:/file1.pdf");
        String content = request.getParameter("TextB1");

        try (FileOutputStream fop = new FileOutputStream(file)) {

            // get the content in bytes
            byte[] contentInBytes = content.getBytes();

            fop.write(contentInBytes);
            fop.flush();
            fop.close();

            System.out.println("Done");

        } catch (IOException e) {
            e.printStackTrace();
        }

【问题讨论】:

  • TextB1 中传递了什么?它实际上是一个 PDF 文件吗?
  • 实际上,我正在使用 JavaScript 中的第三方小程序获取 FileOutputStream,同时使用该小程序进行一些文档验证,然后将其保存到隐藏字段并提交表单。现在在我的 servlet 中,我将其作为字符串获取。我需要将其保存为文件(pdf格式)。
  • 我的问题不是关于如何创建 pdf 文件,我以字符串形式获取文件输出流,我需要将其写入文件。
  • 到 PDF 文件...对吗?
  • fileoutputstream 本身是一个 pdf 文件,我也可以写,但文件已损坏。

标签: java string jsp pdf fileoutputstream


【解决方案1】:

问题可能是因为如果是 PDF 文件,您应该需要对内容进行解码。

这样的事情应该可以工作:

BASE64Decoder decoder = new BASE64Decoder();
byte[] decodedBytes = decoder.decodeBuffer(content.getBytes());

【讨论】:

  • 你不应该使用sun.misc。它们是可以随时删除的内部 API(我认为它们应该在 Java 9 中删除)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-09-06
  • 1970-01-01
  • 2021-01-09
  • 1970-01-01
  • 2014-01-17
  • 2011-10-24
相关资源
最近更新 更多