我在将文件从 HTML 上传到基于 PHP 的 Web 服务器时遇到一些问题。 以下是我的 HTML 代码。我相信这里没有问题。
<html>
<body>
<form action="upload.php" method="post"
enctype="multipart/form-data" action="2.2.2.cgi">
<input type="file" name="file" id="file" size="35"><br>
<input type="submit" name="submit" id="submit" value="Submit">
</form>
</body>
</html>
PHP 代码:
<?php
define ('MAX_FILE_SIZE', 1000000);
$permitted = array('image/gif', 'image/jpeg', 'image/png', 'image/pjpeg', 'text/plain');
if ($_FILES['file']['type'] == $permitted
&& $_FILES['file']['size'] > 0
&& $_FILES['file']['size'] <= MAX_FILE_SIZE) {
move_uploaded_file($_FILES, $uploadedfile);
echo ('<img src="'.$uploadedfile'" />');
}
?>
我不知道如何让它在 PHP 中工作。我一直在尝试几种不同的方法,上面的代码只是我最近一次绝望的尝试,试图通过尝试将值存储到一个新变量中来解决这个问题。我想做的是:
- 限制可上传文件的类型和大小。
- 该文件是图片吗?显示图片。
- 它是纯文本文件吗?显示文件的内容。
- 这是一个未经许可的文件吗?显示文件的名称、类型和大小。
任何形式的提示或帮助将不胜感激。谢谢!
PS。它尚未上线,因此目前任何安全问题都无关紧要。最佳答案
好吧。经过完全测试和注释的代码段。
上传.php
define ('MAX_FILE_SIZE', 1000000);
$permitted = array('image/gif', 'image/jpeg', 'image/png', 'image/pjpeg', 'text/plain'); //Set array of permitted filetypes
$error = true; //Define an error boolean variable
$filetype = ""; //Just define it empty.
foreach( $permitted as $key => $value ) //Run through all permitted filetypes
{
if( $_FILES['file']['type'] == $value ) //If this filetype is actually permitted
{
$error = false; //Yay! We can go through
$filetype = explode("/",$_FILES['file']['type']); //Save the filetype and explode it into an array at /
$filetype = $filetype[0]; //Take the first part. Image/text etc and stomp it into the filetype variable
}
}
if ($_FILES['file']['size'] > 0 && $_FILES['file']['size'] <= MAX_FILE_SIZE) //Check for the size
{
if( $error == false ) //If the file is permitted
{
move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $_FILES["file"]["name"]); //Move the file from the temporary position till a new one.
if( $filetype == "image" ) //If the filetype is image, show it!
{
echo '<img src="upload/'.$_FILES["file"]["name"].'">';
}
elseif($filetype == "text") //If its text, print it.
{
echo nl2br( file_get_contents("upload/".$_FILES["file"]["name"]) );
}
}
else
{
echo "Not permitted filetype.";
}
}
else
{
echo "File is too large.";
}
与此表单一起使用 form.html
<form action="upload.php" method="post"
enctype="multipart/form-data" action="upload.php">
<input type="file" name="file" id="file" size="35"><br>
<input type="submit" name="submit" id="submit" value="Submit">
</form>
</body>
</html>
关于php - 显示从 $_FILES 上传的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14469151/