我有一张表格可以正常发送图像,复制图像并调整大小。
我使用GeoTrust证书在SSL中切换了网站。除文件上传外,一切正常。
表格是这样的:
<form name='sendAvatar' method='post' action='if_avatar_resize.php' enctype='multipart/form-data' target="If_avatar_resize">
所以我将文件上传到iframe中,该iframe包含以下代码:
if (!copy($_FILES['file_image']["tmp_name"], $dest_file)) {
echo $_FILES['file_image']["tmp_name"]."The copy of the file failed..\n".$dest_file ;
} else {
echo $_FILES['file_image']["tmp_name"]."Copy of the file OK " ;
}
上传的文件完全相同,当网站使用HTTPS时,我始终会收到错误消息“文件副本失败”
所以我检查了目录/ tmp以查看文件是否已上传:
没有SSL:
-sh-3.2$ ll phpW7XSL6
-rw------- 1 apache apache 2279079 Jan 26 00:52 phpW7XSL6
-sh-3.2$ ll phpW7XSL6
ls: phpW7XSL6: No such file or directory
使用SSL:
-sh-3.2$ ll phpbcUxyG
-rw------- 1 apache apache 2160218 Jan 26 00:53 phpbcUxyG
-sh-3.2$ ll phpbcUxyG
ls: phpbcUxyG: No such file or directory
因此,无论表单是否为HTTPS,文件的上传工作正常,文件上传到/ tmp
另一方面,如果文件是以HTTPS上传的,则该文件的副本不起作用。
有谁知道为什么?
答案 0 :(得分:0)
代码中只有很少的变化
if (!move_uploaded_file($_FILES['file_image']["tmp_name"], $dest_file)) {
echo $_FILES['file_image']["tmp_name"]."Upload file failed..\n".$dest_file ;
} else {
echo $_FILES['file_image']["tmp_name"]."Upload file Successfully..\n" ;
}
愿这对你有帮助.............:)
答案 1 :(得分:0)
是的,我们无法将$ _FILES http网站发送到https网站。换句话说,move_uploaded_files()函数仅用于移动文件,如http://abc.com到http://xyz.com而不是https:site
答案 2 :(得分:0)
我注意到了类似的问题。
在纯HTTP和HTTPS上测试我的上传后:似乎在SSL模式下,超过PHP的upload_max_filesize
或post_max_size
完全失败,而$ _FILES [...] [“tmp_name” ]没有填充。
由于这是一个新安装的服务器,默认设置为@ 2M,我的上传测试已超出。
我仍然在寻找一些文档来支持这一点,以及一种优雅的方法来检测更强大的错误。