好吧,我已經搜索了一個答案,我找不到任何幫助。我嘗試使用while循環和forloop,但只有一個文件上傳。這是我的代碼。上傳多個文件Php
形式:
<form method="post" enctype="multipart/form-data" action="process.php">
<div id="filediv">
<div id="imagefiles">
<input type="hidden" name="MAX_FILE_SIZE" value="2000000">
<label>Upload File:
<input name="userfile[]" type="file" id="userfile" multiple></label>
<label>Alt Text: <input name="alt" type="text"></label>
</div>
</div>
下面是上傳功能:
$alt=mysqli_real_escape_string($conn, $_POST['alt']);
foreach($_FILES['userfile']['tmp_name'] as $key => $tmp_name){
if (($_FILES["userfile"]["error"] == 0) && ($_FILES['userfile']['size'] > 0))
{
$fileName = $_FILES['userfile']['name'][$key];
$tmpName = $_FILES['userfile']['tmp_name'][$key];
$fileSize = $_FILES['userfile']['size'][$key];
$fileType = $_FILES['userfile']['type'][$key];
} else{
echo"error";
}
$allowedExts = array("jpg", "jpeg", "gif", "png");
$extension = end(explode(".", $_FILES["userfiles"]["name"]));
if((($_FILES["userfile"]["type"] == "image/gif")
||($_FILES["userfile"]["type"]=="image/jpeg")
||($_FILES["userfile"]["type"]=="image/png")
||($_FILES["userfile"]["type"]=="image/pjpeg")
&& in_array($extension, $allowedExts)))
{
$fp = fopen($tmpName, 'r');
$content =fread($fp, filesize($tmpName));
$SourceImage = imagecreatefromstring($content);
$SourceWidth = imagesx($SourceImage);
$SourceHeight=imagesy($SourceImage);
$DestWidth=100;
$DestHeight=130;
if ($SourceHeight> $SourceWidth)
{$ratio = $DestHeight/$SourceHeight;
$newHeight = $DestHeight;
$newWidth = $sourceWidth * $ratio;
}
else
{
$ratio = $DestWidth/$SourceWidth;
$newWidth = $DestWidth;
$newHeight = $SourceHeight * $ratio;
}
$DestinationImage = imagecreatetruecolor($newWidth, $newHeight);
imagecopyresampled($DestinationImage, $SourceImage, 0,0,0,0,$DestWidth, $DestHeight, $SourceHeight, $SourceWidth);
ob_start();
imagejpeg($DestinationImage);
$BinaryThumbnail = ob_get_contents();
ob_end_clean();
$thumb = addslashes($BinaryThumbnail);
$content = addslashes($content);
fclose($fp);
$fp = fopen($tmpName, 'r');
$content = fread($fp, filesize($tmpName));
$content = addslashes($content);
fclose($fp);
mysqli_query($conn, "INSERT INTO files (username, name, size, content, type, link, alt, thumbnail) VALUES ('$username', '$fileName', '$fileSize', '$content', '$fileType', 1, '$alt', '$thumb')") or die('Error, query failed');
echo "<script>alert('The file has been uploaded');location.replace('uploaded.php');</script>";
unlink ($_FILES['username']['tmp_name']);
}else{
echo "<script>alert('Please upload an image');location.replace('upload.php');</script>";
}
}
}
我意識到,我並不需要一半我的代碼。現在我有一個圖像上傳,但不能再一次。
這與此相關嗎? http://stackoverflow.com/questions/1361673/get-raw-post-data – jdog
我不認爲這是它。第一個文件不會上傳,但不會超過一個。我的循環,我試過它不起作用。 – Pureblood
當我嘗試你的html時,$ _FILES是完全空的。我不確定PHP是否支持multiple屬性,因此我建議查看原始HTTP數據 – jdog