PHP中图像文件如何上传

要为网站增加可上传切屏图像的支持,尽管这看起来不算太困难,但确实需要对应用做多处修改。出于这个原因,最好在具体深入代码之前先做一个规划。首先,使用ALTER为数据库增加一个列,要修改数据库,它需要一个新的列存储每个切屏图像文件的文件名。由于我们计划把所有图像文件都放在同一个文件夹中,所以只需要在数据库中存储文件名本身而不包含路径。

其次,要修改表单,使用一个文件输入域以允许图像文件上传。在增加页面上已经有一个表单来增加内容,所以我们需要修改这个表单,在其中增加一个文件输入域。结合web浏览器,这个输入域可以为用户提供一个用户界面来选择要上传的文件。

向数据库中插入图像文件名

图像文件名作为INSERT语句的一部分存储在数据库中。只是通过一个表单向web服务器上传图像文件还不够。还必须在数据库的新列中存储文件名,从而能够访问和显示图像。实际上,ADD脚本已经使用SQL INSERT语句向表插入了新的内容,不过这个语句并没有考虑到新增的列。

由于这个SQL语句只是插入值,而没有明确各自的列名,因此对应每一列都必须包含一个值。不过我们刚增加了一个新列,这说明这个查询无法再正常工作,它缺少对应新列的值。所以要把一个切屏图像文件名作为新的数据行的一部分增加到数据库中,要求我们还要向INSERT语句增加一个新的值。

每一个应用都需要一个图像文件夹

确实,“需要”这个词的与其可能有点过强,不过尽可能地组织PHP应用的各个部分确实很重要,而要做到这一点,一种方法就是为不同的组成部分创建相应的文件夹。由于上传的文件由用户提交,它们往往不是你能直接控制的,至少从文件名和数量上不能控制。所以把它们与其他应用文件分开单独存储是一个很好的方法。我们需要一个图像文件夹,上传到网站应用的图像文件都存储在这里。如果需要,这个文件夹也可以存储应用可能使用的所有其他图像。

图像文件夹与web服务器上的所有其它文件夹很类似,只是它必须放置在应用主web文件夹之下。通常将这个文件夹直接放在web文件夹下就可以了,不过如果愿意你完全可以创建一个更复杂的文件夹层次结构。如果图像文件夹就创建在web服务器的主web文件夹之下,则可以从PHP脚本引用图像文件。与变量类似,常量也存储一段数据。不过常量一旦设置它的值就不会再改变。输入到表单的图像文件名再与图像文件夹路径联接。如果你的PHP应用在别处托管,而不是在你的本地计算机上,则需要使用FTP创建图像文件夹。

PHP中图像上传遇到的问题

如果php.ini文件可以用来控制上传文件的存储位置,为什么还有必要移动文件吗?因为并不总能修改php.ini。例如,如果你在一个虚拟web服务器上构建PHP应用,很可能不能改变php.ini中的位置。即使你能修改php.ini,也存在风险,因为如果需要把它移动到另一个服务器上,很可能会破坏你的应用。换句话说,应用会依赖于由php.ini控制的一个路径,而不是由你自己的PHP代码控制的路径。

当然如果上传的图像文件与先前上传的其它切屏图像同名,从而将后者覆盖。这个是因为存储在web服务器上的切屏图像使用了用户在文件上传表单域中提供的文件名。所以如果两个用户上传了文件名相同的图像文件,第一个用户的图像就会被第二个用户的图像所覆盖。这可不好。一种解决方案是为服务器上的图像文件名增加一定程度的唯一性。为此一种简单的方式是在文件名前面增加当前服务器时间。

«12»
最近发表
控制面板
您好,欢迎到访网站!
  [查看权限]
网站分类
搜索
Tags列表
网站收藏
图标汇集
  • 订阅本站的 RSS 2.0 新闻聚合
友情链接

热门搜索: 外链域名 高外链域名 高收录域名

Copyright www.thyst.cn. Some Rights Reserved.