查看存储在 google 云端的数据内容到前端应用程序,而不是下载名称为 blob 的文件
View Content of data stored on google cloud to frontend application instead of download file with the name of blob
我目前正在使用
在云端存储文本
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())
但是我们不想增加服务器的负载,先在服务器上下载内容,然后再发送给前端。所以我们在前端发送符号URL,这样我们就可以通过使用URL在前端(angular 8)获取内容并创建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-name
的文件
9998-2-202062 而不是只显示内容。
有什么方法可以让我们从云中读取数据 URL 而不是通过 chrome 自动下载内容?
而且我们不更改浏览器设置,因为它不能在客户端机器上完成?
signUrl method 只为指定的资源创建一个 link,你必须实现一种方法来读取它,加入你想要添加的其余文件并处理它们以创建你的客户端PDF。
就是说,例如,您可以创建一个 javascript 文件,并在另一个可能对您有帮助的 Whosebug 答案的 fetch function to gather all the text from the blobs, I found 中使用带符号的 URL:
Promise.all([
fetch(signedURL1).then(x => x.text()),
fetch(signedURL2).then(x => x.text())
]).then(([sampleResp, sample2Resp]) => {
console.log(sampleResp);
console.log(sample2Resp);
});
将 signedURL1
和 signedURL2
替换为您创建的实际签名 URL。
获得文件内容后,您只需创建 PDF,我找到了一个名为 jsPDF 的库,您可能会感兴趣。
我目前正在使用
在云端存储文本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())
但是我们不想增加服务器的负载,先在服务器上下载内容,然后再发送给前端。所以我们在前端发送符号URL,这样我们就可以通过使用URL在前端(angular 8)获取内容并创建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-name
的文件
9998-2-202062 而不是只显示内容。
有什么方法可以让我们从云中读取数据 URL 而不是通过 chrome 自动下载内容? 而且我们不更改浏览器设置,因为它不能在客户端机器上完成?
signUrl method 只为指定的资源创建一个 link,你必须实现一种方法来读取它,加入你想要添加的其余文件并处理它们以创建你的客户端PDF。
就是说,例如,您可以创建一个 javascript 文件,并在另一个可能对您有帮助的 Whosebug 答案的 fetch function to gather all the text from the blobs, I found
Promise.all([
fetch(signedURL1).then(x => x.text()),
fetch(signedURL2).then(x => x.text())
]).then(([sampleResp, sample2Resp]) => {
console.log(sampleResp);
console.log(sample2Resp);
});
将 signedURL1
和 signedURL2
替换为您创建的实际签名 URL。
获得文件内容后,您只需创建 PDF,我找到了一个名为 jsPDF 的库,您可能会感兴趣。