php 文件上传问题
发布网友
发布时间:2022-05-07 13:28
我来回答
共5个回答
热心网友
时间:2022-04-22 08:59
找错,先看错误信息. 根据错误信息提示的行号进行找,. 如果不显示错误信息,请到php.ini查找display_error 是否处于开启状态.
如果确实是不报错的程序., 那么我建议进行一步步的打印
例如: $tmp_filename = $_FILES['myupload']['tmp_name'];
你打印print_r($tmp_filename); 大地有没有获取到这个文件
然后你再查这个:
if(!move_uploaded_file($tmp_filename,$url_this))
你打印move_uploaded_file($tmp_filename,$url_this)的时候,如果出错会返回False错误
函数说明:
move_uploaded_file
(PHP 4 >= 4.0.3, PHP 5)
move_uploaded_file -- 将上传的文件移动到新位置
说明
bool move_uploaded_file ( string filename, string destination )
本函数检查并确保由 filename 指定的文件是合法的上传文件(即通过 PHP 的 HTTP POST 上传机制所上传的)。如果文件合法,则将其移动为由 destination 指定的文件。
如果 filename 不是合法的上传文件,不会出现任何操作,move_uploaded_file() 将返回 FALSE。
如果 filename 是合法的上传文件,但出于某些原因无法移动,不会出现任何操作,move_uploaded_file() 将返回 FALSE。此外还会发出一条警告。
这种检查显得格外重要,如果上传的文件有可能会造成对用户或本系统的其他用户显示其内容的话。追问打印出来是正确的可是插入数据库就成了乱码了 是oracle数据库 其他的字段插入中文就可以这字段是用varchar2类型存储的
热心网友
时间:2022-04-22 10:17
你保存的路径 与 PHP安全模式的配置参数 open_basedir 不匹配,所以目录被*访问,出现无法拷贝的警告。
你可以通过phpinfo()查看下 配置参数open_basedir的值 是多少。 差不多你就明白了。
解决方法2种,
第一是设置 open_basedir为默认值(默认值对所有目录无*)
第二种是 设置匹配路径的 open_basedir
我语文垃圾, 不知道你明白了没?
不过你还应该了解下
open_basedir是个什么东西,, 请看下面:
open_basedir string
将 PHP 所能打开的文件*在指定的目录树,包括文件本身。本指令不受安全模式打开或者关闭的影响。
当一个脚本试图用例如 fopen() 或者 gzopen() 打开一个文件时,该文件的位置将被检查。当文件在指定的目录树之外时 PHP 将拒绝打开它。所有的符号连接都会被解析,所以不可能通过符号连接来避开此*。
特殊值 . 指明脚本的工作目录将被作为基准目录。但这有些危险,因为脚本的工作目录可以轻易被 chdir() 而改变。
在 httpd.conf 文件中中,open_basedir 可以像其它任何配置选项一样用“php_admin_value open_basedir none”的方法关闭(例如某些虚拟主机中)。
在 Windows 中,用分号分隔目录。在任何其它系统中用冒号分隔目录。作为 Apache 模块时,父目录中的 open_basedir 路径自动被继承。
用 open_basedir 指定的*实际上是前缀,不是目录名。也就是说“open_basedir = /dir/incl”也会允许访问“/dir/include”和“/dir/incls”,如果它们存在的话。如果要将访问*在仅为指定的目录,用斜线结束路径名。例如:“open_basedir = /dir/incl/”。
注意: 支持多个目录是 3.0.7 加入的。
默认是允许打开所有文件。
热心网友
时间:2022-04-22 11:52
这都什么回答啊??你们回答都不看题的么?你程序的编码跟mysql 的编码不一致,你可以在上传文件的时候把文件名重定义.然后把原文件名存到数据库,取的时候再给你重命名回去就可以了
热心网友
时间:2022-04-22 13:43
题干不详,无法解答
热心网友
时间:2022-04-22 15:51
使用时间戳 给文件重命名!!!