Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将存储在谷歌云上的数据内容查看到前端应用程序,而不是下载名为blob的文件_Java_Google Cloud Platform_Google Cloud Storage_Angular8 - Fatal编程技术网

Java 将存储在谷歌云上的数据内容查看到前端应用程序,而不是下载名为blob的文件

Java 将存储在谷歌云上的数据内容查看到前端应用程序,而不是下载名为blob的文件,java,google-cloud-platform,google-cloud-storage,angular8,Java,Google Cloud Platform,Google Cloud Storage,Angular8,我目前正在使用 bucket.create(blobName, "hello".getBytes()); 而blob名称看起来像这个1/1/1674/2020-06-02/9998-2-202062 需求是从多个BLOB的数据生成pdf文件。我们可以在java后端通过如下方式从blob路径获取内容来实现这一点 Blob blob=bucket.get("1/1/1674/2020-06-02/9998-2-202062"); new String(blob.getContent()) 但是,

我目前正在使用

bucket.create(blobName, "hello".getBytes());
而blob名称看起来像这个1/1/1674/2020-06-02/9998-2-202062

需求是从多个BLOB的数据生成pdf文件。我们可以在java后端通过如下方式从blob路径获取内容来实现这一点

Blob blob=bucket.get("1/1/1674/2020-06-02/9998-2-202062");
new String(blob.getContent())
但是,我们不希望通过先在服务器上下载内容,然后再将其发送到前端来增加服务器上的负载。因此,我们在前端发送signURL,这样我们就可以使用该URL在前端获取内容并创建pdf。我们正以这种方式创建singurl

Blob blob=bucket.get("1/1/1674/2020-06-02/9998-2-202062");
URL url=blob.signUrl(1, TimeUnit.HOURS,SignUrlOption.signWith(
           ServiceAccountCredentials.fromStream(new FileInputStream(jsonfilePath))));
但前端的问题是,只要我们在任何浏览器上单击URL,它就会下载带有blob名称的文件 9998-2-202062,而不仅仅是显示内容

有没有办法让我们从云URL读取数据,而不是通过chrome自动下载内容? 而且我们不会更改浏览器设置,因为它无法在客户端计算机上完成?

只有创建指向指定资源的链接,您必须实现读取它的方法,加入要添加的其余文件并处理它们,以便在客户端创建PDF

也就是说,例如,您可以创建一个javascript文件,并在中使用已签名的URL来收集blob中的所有文本,我在另一个stackoverflow答案中发现,这可能会帮助您:

我保证[ fetchsignedURL1.thenx=>x.text, fetchsignedURL2.thenx=>x.text ].然后[SampleESP,sample2Resp]=>{ console.logesp; console.logsample2Resp; }; 为您创建的实际已签名URL替换signedURL1和signedURL2


一旦你有了文件的内容,你只需要创建PDF,我发现一个名为的库可能会引起你的兴趣。

你的blob是PDF吗?是生成此PDF的后端吗?如果是这样,您能否共享生成PDF并将其存储在GCS上的代码?如果没有,你能解释一下是哪个元素创建了PDF吗?我们想从该URL下载内容,但只要我们点击该链接,它就会以文件的形式下载。你确实回答了我生成PDF的过程以及如何将其存储到云存储中。signUrl方法正是你所说的,它会生成一个指向实际资源的URL,让您下载该文件。它不会显示文件的内容,只是一个下载链接。解释生成PDF的过程很重要,这主要是因为如果你在前端(即用户PC)下载文件,您打算如何生成他的PDF?@Emmanuel我们必须从前端的多个签名URL数据的内容准备PDF,但每次我们尝试获取数据时,它都会下载包含内容的文件。我们希望从签名URL下载内容,而不将其作为文件下载。