php保存任何文件的文本是否工作不正常?
我想创建文件共享平台,但php有一些缺陷。我只需使用fread获取任何文件的文本php保存任何文件的文本是否工作不正常?,php,sql,file,pdf,text,Php,Sql,File,Pdf,Text,我想创建文件共享平台,但php有一些缺陷。我只需使用fread获取任何文件的文本(exe、pdf、docx、ppt等),然后我创建具有随机名称和.txt扩展名的文本文件。因此,当用户想要下载此文件时,我创建了一个随机文件夹,在这个文件夹中我创建了一个和用户想要下载的文本相同的文件,然后我给出了和用户上传的文件版本相同的扩展名,并强制用户下载它。 但当用户下载文件时,例如zip文件,然后如果用户想要打开,它会说无法打开,因为不支持格式。当我尝试使用docx、pdf、zips等文件(不是txt、ht
(exe、pdf、docx、ppt等)
,然后我创建具有随机名称和.txt
扩展名的文本文件。因此,当用户想要下载此文件时,我创建了一个随机文件夹,在这个文件夹中我创建了一个和用户想要下载的文本相同的文件,然后我给出了和用户上传的文件版本相同的扩展名,并强制用户下载它。
但当用户下载文件时,例如zip文件,然后如果用户想要打开,它会说无法打开,因为不支持格式。当我尝试使用docx、pdf、zips等文件(不是txt、html、css、c文件)时,就会出现这种情况
示例:我强制用户下载与他上载的扩展名相同的文件,例如,如果用户上载了zip文件,我使用fread读取文本,然后将此文本保存在db或文本文件中,然后如果用户想要下载该文件,我只需创建文件并为其提供zip扩展名,然后强制用户下载,但一旦用户上传这个文件,如果用户想打开它就会失败,但它应该打开zip文件,因为这个文件的内容文本和用户上传到服务器的内容完全相同
答复应包括:
1) 为什么会发生这种情况?如何修复
2) 理想的解决方案是什么
3) 这样做安全吗
很好的是,当这个问题一开始就没有意义时,你就为答案设定了标准,为什么要考虑可执行文件或包含二进制文件或文本的文件呢?你不能创建一个zip文件并将上传的文件添加到那里吗?@Mr.Phoenix谢谢。是的,我可以这样做,但我需要能够读取这些文件,因为我会向用户显示此文件的内容,可以使用不同的方式,例如,如果它是pdf,当我完成pdf阅读器时,它将是可读的,当它是zip时,它不会有预览,这可能类似于dropbox。例如,如果我将zip上传到dropbox,然后如果我将其重命名为txt文件,它会显示文本内容,我想我可以用这种方式存储任何文件,这样当我的阅读器准备好后,我就可以在将来使用每种格式。但问题没有发生。我实际上没有强迫用户下载与他上载的相同扩展名,例如,如果用户上载zip文件,我用fread读取文本,然后将此文本保存在db或文本文件中,然后,如果用户想要下载该文件,我只需创建文件并为其提供zip扩展名,然后强制用户下载,但一旦用户上传该文件,如果用户想要打开该文件,则会失败,但它应该打开zip文件,因为该文件的内容文本与用户上传到服务器的内容完全相同,您可以确定,您对编码没有问题,或者数据库字段不太小,无法保存所有内容?即使确保此文件包含的内容与上载的版本相同,我也更改了real file(将上载)的扩展名,然后复制文本并将其粘贴到下载的版本,然后更改两者的extesion,real file工作正常,下载再次失败我有一些编码问题,我将就此提出另一个问题,但似乎还有另一个问题,因为我复制了旧文件文本并将其粘贴到下载的文件中,它再次失败谢谢你的回答,无法读取二进制文件的文本内容吗?它是二进制文件。当您使用文本编辑器打开它时,您将看到编辑器对文件的解释。您可以将其内容保存到纯文本文件中,但如果存在编码问题,则很可能会破坏它。为什么不简单地将blob对象存储在数据库中,或者将文件存储在文件系统中更安全的地方?