Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP文件上传_Php_Mysql_File_Upload - Fatal编程技术网

PHP文件上传

PHP文件上传,php,mysql,file,upload,Php,Mysql,File,Upload,我正试图使用php将文件上传到我的服务器,以二进制形式保存到我的mysql数据库中,但我无法让它工作,这是我正在使用的脚本,我相信它与“$\u文件”有关,因为当我取出“&&&$\u文件['userfile']['size']>0”脚本开始运行,但未定义下面使用“$\u文件”的变量 if(isset($_POST['upload']) && $_FILES['userfile']['size'] > 0) { $fileName = $_FILES['userfile'][

我正试图使用php将文件上传到我的服务器,以二进制形式保存到我的mysql数据库中,但我无法让它工作,这是我正在使用的脚本,我相信它与“$\u文件”有关,因为当我取出“&&&$\u文件['userfile']['size']>0”脚本开始运行,但未定义下面使用“$\u文件”的变量

if(isset($_POST['upload']) && $_FILES['userfile']['size'] >  0) {
$fileName = $_FILES['userfile']['name'];
$tmpName  = $_FILES['userfile']['tmp_name'];
$fileSize = $_FILES['userfile']['size'];
$fileType = $_FILES['userfile']['type'];

$fp      = fopen($tmpName, 'r');
$content = fread($fp, filesize($tmpName));
$content = addslashes($content);
fclose($fp);

if(!get_magic_quotes_gpc())
{
    $fileName = addslashes($fileName);
}

db_connect();
db_select();

$query = "INSERT INTO upload (name, size, type, content ) ".
"VALUES ('$fileName', '$fileSize', '$fileType', '$content')";

mysql_query($query) or die('Error, query failed');
db_disconnect();

echo "<br>File $fileName uploaded<br>";
}
if(isset($\u POST['upload'])&&&$\u FILES['userfile']['size']>0){
$fileName=$_文件['userfile']['name'];
$tmpName=$\u文件['userfile']['tmp\u名称'];
$fileSize=$_文件['userfile']['size'];
$fileType=$_文件['userfile']['type'];
$fp=fopen($tmpName,'r');
$content=fread($fp,filesize($tmpName));
$content=addslashes($content);
fclose($fp);
如果(!get_magic_quotes_gpc())
{
$fileName=addslashes($fileName);
}
db_connect();
db_select();
$query=“插入上载(名称、大小、类型、内容)”。
“值('$fileName','$fileSize','$fileType','$content')”;
mysql_query($query)或die('Error,query failed');
db_disconnect();
echo“
上传的文件$fileName
”; }
我假设您正在发布的字段名为“userfile”

此外,这与您的问题没有直接关系,但通常认为将文件存储在文件系统中比存储在MySQL中更好。文件系统设计用于存储大块二进制数据,而数据库则不是。

您最好使用来检查上载是否成功


不要对MySQL查询使用
addslashes
函数。改为使用。

如果您使用表单上载文件,“表单”标记中是否有“enctype=“multipart/form data”?

根据您的示例,我假设您的输入名称是
upload
<代码>PHP中的结果不是在
$\u POST
中排序的,而是在
$\u文件中排序的。文档使用
$\u文件['userfile']
作为其示例字段,但是如果您的输入声明为
,您只需使用
$\u文件['upload']

,这是一个两重过程,首先是上载本身,然后是服务器上的操作。第一个验证是确保文件被上传。对于这一点,您可以在生产线之后使用

$fileName = $_FILES['userfile']['name'];
使用:

尝试使用它,如果文件确实上传了,可能会重新发布。仅仅因为$\u文件包含内容,并不一定意味着该文件已上载到服务器。

请尝试制作打印($FILES)并定义问题所在。
可能表单不需要类型?

我首先将文件存储在文件系统中,但尝试了此操作以确保错误与服务器不允许上载或其他内容有关。不,这是我的表单代码:可以方便地检查var_dump($文件)的输出,以查看其中的内容。
if(is_uploaded_file($fileName)) {
  // Here goes all the file manipulation/storage/etc
} else {
  echo 'Error: File could not be uploaded.';
}