提供上传文件,将文件写入硬盘,获取完整路径(字符串)添加到数据库CakePHP中


Provide uploading files, write the file on hard disk, get full path (string) to add in database CakePHP

由于我只是在做这个实验,(只有localhost)我可能想问一些关于让用户注册的想法(因为我什么都没想出来),例如,让用户注册到一个小型社交网站,并提供相应的用户名/密码、个人详细信息等。我会上传图片,并将其保存到文件夹中(在我的硬盘上,可以是驱动器C:''或D:),例如"/images/username",文件夹的完整路径将是插入到名为img_dir的行中的路径(当然,它是一个字符串,而不是作为BLOB,所以稍后我只会使用img src="path")。我不介意它将被保存在哪里。但由于我是cakepp的新手,我还没有真正掌握我要做什么的想法。我在注册/登录会话方面没有问题。这在C#中很容易,但我可能对PHP太笨了?:P

虽然这可能不会为您提供CakePHP的直接解决方案,但您已经征求了一些想法。

我在这篇文章中概述了在文件系统上存储文件的一些优点和缺点(以及一些其他方法)。

希望能有所帮助。。。

我已经为这类任务编写了一个完整的插件,它比保存文件路径的想法更仔细。

一个文件有更多的元数据,比如它的大小和mime类型,这在提供文件时很有用。因此,上传的文件应该作为自己的实体来处理。我个人认为直接将路径保存到所属记录中的文件是个坏主意。如果以后需要两个图像,会发生什么?添加递增字段,如路径1、路径2?

IMO最好有一个单独的文件表,并将记录与这些文件记录关联起来。以CakePHP关联表示:例如,用户有一个头像或画廊有许多图像。

此外,如果在文件系统的同一级别中有很多目录和文件,则由于文件系统性能问题,将文件保存在uploads''username1''pic.jpg这样的路径中可能会导致应用程序速度减慢。

然而,请查看我的插件readme.md,这里有更多关于它为什么会这样做来解决你可能遇到的不同类型的问题的信息。