所以,我最近查找了如何使用Blob将文件上传到数据库。这是我找到的教程http://www.php-mysql-tutorial.com/wikis/mysql-tutorials/uploading-files-to-mysql-database.aspx
我遵循本教程,并提出了这段代码-
HTML表单- <form action='memberPage.php' method='post' enctype='multipart/form-data'>
<input type='text' name='programName' placeholder='Program Name'></input>
<input type='text' name='programPrice' placeholder='Price'></input>
<div id='uploadFiles'>
<input name='userfile1' type='file' onchange='addAnother()'>
</div>
<input type='submit' value='Create program' style='cursor:pointer;'></input>
</form>
PHP UPLOAD ($programName是在代码外指定的,它看起来像$programName=$_POST["programName"];)
for($i = 1; $i < 999;$i++){
if(isset($_POST["userfile" . $i]) && $_FILES["userfile" . $i]['size'] > 0){
$Filename = $_FILES["userfile" . $i]['name'];
$finfo = new finfo();
$Filetype = $finfo->file($_FILES["userfile" . $i]['tmp_name'], FILEINFO_MIME);
$Filesize = $_FILES["userfile" . $i]['size'];
$Filetmpname = $_FILES["userfile" . $i]['tmp_name'];
$Fileerror = $_FILES["userfile" . $i]['error'];
$fp = fopen($Filetmpname, 'r');
$content = fread($fp, filesize($Filetmpname));
$content = addslashes($content);
fclose($fp);
if(!get_magic_quotes_gpc())
{
$Filename = addslashes($Filename);
}
mysqli_query($conn, "INSERT INTO upload(name,type,size,content,program) VALUES('
'" . $Filename. "','" . $Filetype. "','" . $Filesize . "','" . $content . "','" . $programName . "')");
}else{
$i=999;
header("location:memberPage.php");
}
}
但是当我提交论坛时,文件返回时没有任何内容,没有名称,大小为零。
我也检查了其他问题的东西在这里,没有找到答案,所以我的猜测是它是在我的代码。
让我也指定onchange='addAnother()'添加另一个输入,但有下一个结束数字(例如- userfile1,它会添加userfile2)
您正在使用输入名称"programName",并试图获得"programName"与$_POST相同。
PHP是区分大小写的,你应该在PHP中使用相同的大小写"$_POST['programName']"
我们需要检查file元素而不是post元素。
尝试更改
if(isset($_POST["userfile" . $i]) && $_FILES["userfile" . $i]['size'] > 0){
if(isset($_FILES["userfile" . $i]) && $_FILES["userfile" . $i]['size'] > 0){
最好将输入名称创建为数组。
<input name='userfile[]' type='file' onchange='addAnother()'>
并在PHP中迭代,如:
if (isset($_FILES["userfile"]) && is_array($_FILES["userfile"])) {
for ($i=0;$i<count($_FILES["userfile"]);$i++) {
echo $_FILES["userfile"]["name"][$i];
}
}