我完全难过了。我正在尝试通过HTTPS上传一张简单的照片。我已经无数次地完成了这项工作,但有一次它不起作用。
这是情况。我正在使用一个非常简单但强大的文件上传脚本,简单的input = file等,并提交按钮以使用POST上传,从那里PHP接管并完成剩下的工作。一旦在PHP端,我经历了一些问题解决/调试,并注意到文件名是一堆goop ... uploads /1. 8D J Q 9。当然不是我选择的文件。
我不确定这是SSL,HTML5还是PHP的问题。传递的所有其他数据最终在数据库中非常易读。
我在c:\ fakepath的文件上传框中注意到了一些新内容,我在过去的几个月中使用过HTML5并且没有看到这个,查找它并看到它是HTML5安全功能。不知道那是不是造成了这个问题?
好的,所以我已经和朋友确认了(包括我疯了)HTML和PHP很好。
我甚至打破了它并且变得非常简单但仍然没有运气......
$uploaddir = 'uploads/';
$uploadfile = $uploaddir . basename($_FILES['photo']['name']);
$filename = $_FILES['photo']['name'];
if (move_uploaded_file($_FILES['photo']['tmp_name'], $uploadfile)) {
echo "Alls good.";
}
同样在HTML页面上,我使用的是jquery插件“niceforms”,我已将其关闭以排除它,但仍无效。
谢谢。
答案 0 :(得分:3)
我想知道你是否宣布了下面的那个:
<form enctype="multipart/form-data" action="uploader.php" method="POST">
<input type="hidden" name="MAX_FILE_SIZE" value="100000" />
Choose a file to upload: <input name="uploadedfile" type="file" /><br />
<input type="submit" value="Upload File" />
</form>
如果您上传了某些内容,则应声明enctype
。
答案 1 :(得分:1)
总是简单的事情不是吗?我想你可能会忽略你要将文件移动到的相对上传目录路径。我不会在这里使用相对路径。
$uploaddir = 'uploads/';
相反,请尝试使用上传目录的完整文件系统路径。这通常是与“uploads”目录连接的文档根目录。
$_SERVER['DOCUMENT_ROOT'] or dirname(__FILE__)
...应该有助于定义路径。
$uploaddir = $_SERVER['DOCUMENT_ROOT'].'/uploads/';