【发布时间】:2017-09-19 12:28:10
【问题描述】:
我想创建文件共享平台,但 php 有一些关于它的错误。我只是使用 fread 获取任何文件的文本 (exe,pdf,docx,ppt and etc) 然后我创建具有随机名称和 .txt 扩展名的文本文件。所以当用户想要要下载此文件,我创建随机文件夹并在该文件夹内创建与用户想要下载的文本相同的文件,然后我给出与用户上传的文件版本相同的扩展名并强制用户下载它。
但是当用户下载文件时,例如 zip 文件,然后如果用户想要打开,它说因为不支持格式而无法打开。当我尝试使用 docx、pdfs、zips 和那种文件(不是 txt ,html,css,c 文件)。
示例:我强制用户下载与他上传的扩展名相同的扩展名,例如,如果用户上传了 zip 文件,我用 fread 读取文本然后将此文本保存在 db 或文本文件中,然后如果用户想要下载那个文件,我只是创建文件并给它 zip 扩展名,然后强制用户下载它,但是一旦用户上传这个文件,那么如果用户想打开它失败,但它应该打开 zip 文件,因为它的内容文本文件与用户上传到服务器的文件完全相同
答案应包含:
1)为什么会发生这种情况?如何解决?
2)什么是理想的解决方案?
3)这样做安全吗?
【问题讨论】:
-
当这个问题一开始毫无意义时,您为答案设定了标准,为什么要考虑可执行文件或包含二进制文件或其他任何内容的文件?你不能只创建一个 zip 文件并在那里添加上传的文件吗?
-
@Mr.Phoenix 谢谢。是的,我可以这样做,但我需要能够读取这些文件,因为我会将这个文件的内容显示给用户,它可以用不同的方式,例如如果它是pdf,当我完成我的pdf阅读器时它将是可读的,当它是zip时它不会有预览,这可能类似于dropbox。例如,如果我将zip上传到dropbox然后如果我重命名它到 txt 文件,它向我显示文本内容,我想我可以用这种方式存储任何文件,所以当我的阅读器准备好时,我可以在将来使用每种格式。但是发生了这个问题