0

我有一个表格可以很好地发送图像,复制它们并调整它们的大小。

我使用 GeoTrust 证书在 SSL 中切换了网站。除文件上传外,一切正常。

表格是这样的:

<form name='sendAvatar' method='post' action='if_avatar_resize.php' enctype='multipart/form-data' target="If_avatar_resize">

因此,我将文件上传到具有以下代码的 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 上传,则文件的副本不起作用。

有谁知道为什么?

4

3 回答 3

0

是的,我们不能将 $_FILES http 站点发送到 https 站点。换句话说,move_uploaded_files() 函数仅用于将http://abc.com之类的文件移动到http://xyz.com而不是 https:site

于 2013-08-23T09:48:34.237 回答
0

我注意到一个类似的问题。

在测试了我在纯 HTTP 和 HTTPS 上的上传后:似乎在 SSL 模式下,超过 PHPupload_max_filesizepost_max_size完全失败,并且 $_FILES[...]["tmp_name"] 没有填充。

由于这是一个新安装的服务器,默认设置为@2M,我的上传测试超过了这个值。

我仍在寻找一些文档来支持这一点,以及一种仍然检测更强大错误的优雅方法。

于 2013-12-08T09:27:00.883 回答
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" ;
}

愿这会对你有所帮助...... :)

于 2013-01-26T10:40:47.557 回答