所以我通过REST api GET请求接收文档,该请求返回包含文件的JSON作为base64编码数据以及有关文件的元数据,如文件名和描述。
以下是返回JSON的示例(实际base64数据替换为" BASE64编码文件"为了便于阅读):
"documents":[
{
"name":"Job Description.doc",
"description":"Job Description",
"data":"BASE64 ENCODED FILE"
},
{
"name":"Person Description.doc",
"description":"Person Description",
"data":"BASE64 ENCODED FILE"
}
]
我知道我可以json_decode()
数据,然后执行:
file_put_contents('/path/to/file/'.base64_decode($documents->data));
这个问题是文件被永久存储(在这种情况下是不可接受的)。我想知道是否有任何方式提供下载文件而不将其作为文件存储在任何地方。也许与base64编码图像如何用作图像标记的源类似。
你有什么想法?可以这样做吗?
答案 0 :(得分:1)
看起来你在服务器上使用了php。
根据我的理解:
问题是,在流程结束时,您必须已将文档内容保存到某处或将其传输到访客客户端/浏览器。否则它会丢失给您的服务器(除了在某些特殊情况下,我宁愿避免多次执行传递文件内容的REST HTTP请求。)
在数据丢失之前,在响应中将所有文件传输给访问者是可能的。一种方法是:
另一种看似可行的方法是将HTML内容发送到您的浏览器,其中包含所有已编码的文件内容。然后客户端代码将完成剩余的工作。我不确定我是否这样做,但你可以查看https://stackoverflow.com/a/3916267/1106814
然而,除非我有特殊条件,否则我宁愿"保存"文件内容,暂时在服务器上。有多种方法可以获得可接受的解决方案:
我希望提供有用的想法。