首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >php保存任何文件的文本是否正常工作?

php保存任何文件的文本是否正常工作?
EN

Stack Overflow用户
提问于 2017-04-22 15:02:28
回答 2查看 120关注 0票数 2

我想要创建文件共享平台,但是php有一些缺陷。我只需使用fread获取任意文件的文本,然后我创建任意名称的文本文件,当用户想下载该文件时,我使用.txt extension.So创建随机文件夹,在文件夹中创建包含用户想要下载的文本的文件,然后给出与用户上传的文件相同的扩展名,并强制用户下载。但是,当用户下载文件(例如zip文件)时,如果用户想打开,它会说打开失败,因为不支持的format.This在我尝试使用docx、pdfs、zip和类似的文件(不是txt、html、css、c文件)时会发生。

示例:我强迫用户以与他上传的扩展名相同的扩展名下载,例如,如果用户上传了zip文件,我使用fread读取文本,然后将该文本保存在db或文本文件中,然后如果用户想下载该文件,我只需创建文件并赋予其zip扩展名,然后强制用户下载,但一旦用户上传该文件,如果用户希望打开该文件,则应该打开zip文件,因为该文件的内容文本与上传到服务器的用户完全相同。

答复应包括:

(1)为什么会发生这种情况?如何解决?

2)什么是理想的解决方案?

(3)这样做安全吗?

EN

回答 2

Stack Overflow用户

发布于 2017-04-22 15:11:23

  1. 这种情况会发生,因为windows知道应用程序只从扩展名打开文件文件。如果将文件重命名为something.txt,则编辑器总是希望打开它。
  2. 没有理想的解决办法。解决方案是将文件以原始名称存储(可能在某个唯一的部分以防止重复)存储在非公共可读目录中,而不设置执行位。要访问该文件,您可以创建一个代理脚本,该脚本返回文件并追加一个应该下载的标题(可能还有原始文件名)。
  3. 它和你实现它一样安全。您当前的解决方案可能是安全的,我发布的解决方案可能是安全的-但不知道细节,您如何实现它,谁也不知道它是否真的安全。
票数 0
EN

Stack Overflow用户

发布于 2017-04-22 15:24:11

  1. 之所以会出现这种情况,是因为您正在像zip文件一样打开二进制文件,并将其存储在文本文件中,然后再用zip扩展名对其进行流处理。
  2. 理想的解决方案是使用100万开放源码文件管理器中的一个,它拥有经过验证的记录和大型开发人员社区。但是,如果出于某种原因要构建自己的文件,请将文件保存在公用文件夹之外的安全文件夹中。将路径与您将显示给用户的公共路径一起存储在所选择的数据库中。根据请求,使用公共路径映射到私有路径并自己开始下载。
  3. 与您所做的一样安全,但是没有什么是100%安全的,所以如果您正在存储敏感数据,请使用构建良好并记录在案的内容。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43560722

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档