为什么PHP';s move_uploaded_file()方法在我的脚本中返回false?
我正在构建一个页面,允许将文件上载到服务器并进行排序。我知道这段代码,即使它在运行,也不适合在现场使用,因为我对服务器端脚本编写还很陌生,所以它只是让机制工作的初稿 无论如何,这里是上传表单页面:为什么PHP';s move_uploaded_file()方法在我的脚本中返回false?,php,html,file,forms,upload,Php,Html,File,Forms,Upload,我正在构建一个页面,允许将文件上载到服务器并进行排序。我知道这段代码,即使它在运行,也不适合在现场使用,因为我对服务器端脚本编写还很陌生,所以它只是让机制工作的初稿 无论如何,这里是上传表单页面: <html> <body> <?php include("header.php"); ?> <center> <h1>Please enter the details of the file you would like to upload:
<html>
<body>
<?php include("header.php"); ?>
<center>
<h1>Please enter the details of the file you would like to upload:</h1><br/>
<table>
<tr>
<td align='center'>
<form action='uploader.php' method='POST' enctype='multipart/form-data'><b>Name:</b> </td>
<td align='left'><input type='text' name='name' maxlength='255' />
</td>
</tr>
<tr>
<td align='center'><b>Description of file uploaded: </b>
</td>
<td align='left'><textarea name='description' rows='5' cols='20'></textarea>
</td>
</tr>
<tr>
<td align='center'><b>Category: </b>
</td>
<td align='left'>
<select name='category'>
<option value='1'>Agriculture</option>
<option value='2'>Sexual Health</option>
<option value='3'>Arithmetic</option>
<option value='4'>Technology</option>
<option value='5'>Reading/Literature</option>
<option value='6'>Health/Medicine</option>
</td>
</tr>
<tr>
<td align ='center' >
<b>File: </b>
</td>
<td align='left'>
<input type="hidden" name="MAX_FILE_SIZE" value="100000" />
<Choose a file to upload: <input name="uploadedfile" type="file" /><br />
</td>
</tr>
<tr height='20px'></tr>
<tr align ='left'>
<td> </td>
<td>
<input type='Submit' value='Upload File' />
</td>
</tr>
</table>
</center>
<?php include("footer.php"); ?>
</body>
</html>
请输入要上载的文件的详细信息:
姓名:
上载文件的说明:
类别:
农业
性健康
算术
技术
阅读/文学
健康/医学
文件:
您似乎正确地调用了函数,并在正确的上下文中使用了它
就文档而言,有两种情况下可以从move\u upload\u file
函数返回false:
如果文件名不是有效的上载文件,则不会执行任何操作,并且move_uploaded_file()将返回FALSE
我们可以假设情况并非如此,因为我们在$\u FILES
数组中使用文件中的tmp\u name
元素
如果文件名是有效的上载文件,但由于某种原因无法移动,则不会执行任何操作,并且move_uploaded_file()将返回FALSE。此外,将发出警告
因此,这一定与这一统天下有关。我建议打开display\u errors
,这样我们就可以看到生成的警告。如果($\u FILES['uploadedfile']['error']!=0)
会给出错误的可能原因。
查看错误代码,问题是:HTML无效,导致表单
元素过早关闭
没有
结束标记,因此它被插入到下一个适当的点,即
<td align='center'>
<form action='uploader.php' method='POST' enctype='multipart/form-data'>
<b>Name:</b>
</form> <!-- <- here -->
</td>
姓名:
这样,名为uploadedfile
的文件输入元素就在表单之外,永远不会被发送到uploader.php
。若要更正此问题,请将开始标记移到表之外,在正文
末尾附近添加结束标记,然后删除您的权限是什么?文件夹位于我的本地计算机上,并且似乎没有任何特殊限制。发生错误时,您可以使用$\u FILES['uploadedfile']['error']并检查到底发生了什么(我猜您正在将文件移动到不存在的目录)。有关如何解释文件上载时的错误消息,请咨询php.net。我经常遇到的错误是“未定义索引:uploadedfile”我以为表单为我将文件添加到了这个数组中……我应该自己添加它吗?更好的是,始终检查是否$\u FILES['uploadedfile']['error']==UPLOAD\u ERR\u OK
,并根据错误采取相应的行动(请参阅)。我认为在前面的地方出现了错误,因为$\u FILES
中出现了错误“Undefined index:uploadedfile”。我得到的错误是:注意:未定义的索引:C:\Users\Paul\Desktop\XAMPP\htdocs\XAMPP\uploader.php中的uploadedfile在第8行注意:未定义的索引:C:\Users\Paul\Desktop\XAMPP\htdocs\XAMPP\uploader.php中的uploadedfilen第10行感谢您的输入,但这应该是一条评论。更重要的是,正如您在上面看到的,我已经用此消息对问题发表了评论(是的,我知道如果您的代表低于50岁,您不能对其他人的问题发表评论).hmm,当我这样做时,我得到一个额外的错误:注意:未定义的变量:C:\Users\Paul\Desktop\XAMPP\htdocs\XAMPP\uploader.php中的target_path在第10行非常感谢这确实是个问题!我只是假设它是php,因为我对它太陌生了!不过有一件事…我已经测试了这个脚本,现在它可以运行了…而且它仍然可以运行上传.mp3文件时出现ses错误。我认为这只是大小问题,但即使@Paul:这也不会导致任何问题;我看到的唯一一件事是粘贴的代码包含最大文件大小规则
<td align='center'>
<form action='uploader.php' method='POST' enctype='multipart/form-data'>
<b>Name:</b>
</form> <!-- <- here -->
</td>