Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/256.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.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
Php 如何在浏览器中安全地呈现Azure存储的图像而不显示URL?_Php_Image_Azure - Fatal编程技术网

Php 如何在浏览器中安全地呈现Azure存储的图像而不显示URL?

Php 如何在浏览器中安全地呈现Azure存储的图像而不显示URL?,php,image,azure,Php,Image,Azure,假设我的文件存储在(删除了真实凭据): A) 这个文件现在可以下载,如果我只是浏览它-我真的不认为这应该是可能的 B) 我想在我的应用程序中呈现此内容,而不允许用户查看URL 我在后端使用PHP。是否有某种方法可以将图像下载到服务器并从那里渲染?效率高吗 任何想法都值得赞赏。以下是您的选择: 使blob/容器成为公共的,并嵌入公共URL 为blob生成临时SAS令牌,并使用URL+SAS令牌嵌入 使用存储密钥从后端下载blob,并将其流式传输到客户端 使用选项1,文件必须是可公开访问的,我想这

假设我的文件存储在(删除了真实凭据):

A) 这个文件现在可以下载,如果我只是浏览它-我真的不认为这应该是可能的

B) 我想在我的应用程序中呈现此内容,而不允许用户查看URL

我在后端使用PHP。是否有某种方法可以将图像下载到服务器并从那里渲染?效率高吗


任何想法都值得赞赏。

以下是您的选择:

  • 使blob/容器成为公共的,并嵌入公共URL
  • 为blob生成临时SAS令牌,并使用URL+SAS令牌嵌入
  • 使用存储密钥从后端下载blob,并将其流式传输到客户端
  • 使用选项1,文件必须是可公开访问的,我想这是您不想要的

    剩下选项2和3

    如果您同意显示URL,但只允许用户临时访问该文件,那么选项2可能是一个不错的选择

    否则,您只有选项3


    选项1和2的优点是blob直接从存储设备下载到用户,并且您的应用程序不必在流文件上花费时间/带宽。

    A)
    这就是它的工作原理。你可以下载所有你能看到的东西。到
    B)
    但是用户只需单击另存图像为,或者只需对页面进行屏幕截图?!解析到浏览器(客户端)的所有内容都不再受您的控制。我不介意它们保存图像。我只是不想透露我们图像的存储结构。好的,然后用php直接解析图像。阅读更多信息:下载带有
    file\u get\u contents('http://')的文件到本地,并使用链接中的方法将其输出。用户浏览器中真正调用的文件可以类似于
    getImage.php?id=referetotherealurl
    编写一个脚本,并将其放在
    src=
    属性中,而不是图像url,例如
    src=“getimg.php?id=1234567890”
    然后为来自该scriptbase64的真实图像提供服务,对图像进行编码并使用类似于
    src的内容=“数据:图像/jpeg;base64,….
    我会选择选项2,只生成一个短期sas令牌。URL将可见,但很快就会过期。选项3的缺点是,在扩展时,它会影响您扩展Web应用程序的方式,因为您不会将流量转移到存储帐户。这可能会导致代价高昂的情况:)