使用php上传文件时遇到问题(使用Linode服务器)


Trouble uploading a file using php (using a Linode server)

我试图通过我的php脚本(大小约89kb)上传图像。我的index.php的代码是:

<html>
<head>
<title>File Uploading Form</title>
</head>
<body>
<h3>File Upload:</h3>
Select a file to upload: <br />
<form action="file_uploader.php" method="post"
                        enctype="multipart/form-data">
<input type="file" name="file" size="100" />
<br />
<input type="submit" value="Upload File" />
</form>
</body>
</html>

与file_uploader.php

放在同一个目录中。然后file_uploader.php的代码是:
<?php
if( $_FILES['file']['name'] != "" )
{
   copy( $_FILES['file']['name'], "" ) or 
           //Exit and show the error message, die does this
           die( "Could not copy file!");
}
else
{
    die("No file specified!");
}
?>
<html>
<head>
<title>Uploading Complete</title>
</head>
<body>
<h2>Uploaded File Info:</h2>
<ul>
<li>Sent file: <?php echo $_FILES['file']['name'];  ?>
<li>File size: <?php echo $_FILES['file']['size'];  ?> bytes
<li>File type: <?php echo $_FILES['file']['type'];  ?>
</ul>
</body>
</html>

目录index和file_uploader的权限为:755.

脚本似乎加载,但我得到错误"无法复制文件",不知道这里发生了什么。有人能给我点建议吗?谢谢! !

看一下文档,然后请解释一下copy( $_FILES['file']['name'], "" )应该做什么?如果我是你,我会修复该语句,并将其替换为专门为此创建的更安全的变体:move_uploaded_file。

另外,通读手册中的这一节,你可能会在你的代码中发现另一个bug;如果你使用$_FILES[0]['tmp_name']可能会使它工作得更好。

把所有这些放在一起;我使用:

move_uploaded_file($_FILES[0]['tmp_name'], __DIR__ .'/'. $_FILES[0]['name']);