-2

我正在从服务器请求一个文件,使用它读取它file_get_contents并将该数据发送到客户端。是否可以将附加信息(如文件 ID)与图像二进制数据一起发送?

我正在使用 Flash 播放器来显示此图像。可以选择使用flash loader 对象 并使用 url 加载图像,但这意味着所有图像都必须是公开的,我想将它们保密。

4

3 回答 3

0

这是与客户端或直接浏览器客户端的 Ajax 会话,还是其他?

如果是普通浏览器,不知道为什么需要 get_file_contents 只是链接文件并将 ID 等文件信息添加到 html 中很简单

如果是 Ajax,您可以将文件信息格式化为预先确定的长度字符串,附加到文件内容中,并将其全部作为一个数据块发送。然后,客户端可以剥离已知长度的前置字符,以单独访问文件信息和内容,或使用数十种其他方法中的任何一种

你需要澄清这个问题,我认为

添加 :

要解决保持文件私密性的问题,您可以尝试将文件复制到临时文件夹中,这会增加服务器负载,但可能会解决您的问题。例如,代替 mysite.com/img/test.jpg 使用 mysite.com/workfiles/userid_12345678_img_randombit.jpg ........ 跟踪表中的文件并在一段时间后删除它们......工作,但可能会解决您的隐私问题

于 2013-09-09T14:10:32.747 回答
0

可以打电话exiftool吗?您可以设置一个键:值。在这里查看 png 和 gif... http://www.sno.phy.queensu.ca/~phil/exiftool/TagNames/PNG.html#TextualData http://www.sno.phy.queensu.ca/~ phil/exiftool/TagNames/GIF.html

于 2013-09-16T12:46:02.123 回答
0

我认为您可以使用“Content-Disposition”HTTP 标头。我不知道如何在 PHP 中完成,但在 .NET 中,您可以执行以下操作(也许您可以弄清楚如何翻译为 PHP):

    this.Response.Clear();

    this.Response.ContentEncoding = Encoding.UTF8;
    this.Response.Buffer = true;

    this.Response.ContentType = "application/octet-stream";
    this.Response.AddHeader("Content-Disposition", "attachment; filename=filename.txt");

    Response.Write(_buffer);
    Response.End();
于 2013-09-16T12:50:35.943 回答