【问题标题】:$_SERVER['HTTP_X_FILENAME'] undefined only on Go Daddy$_SERVER['HTTP_X_FILENAME'] 仅在 Go Daddy 上未定义
【发布时间】:2013-10-24 02:12:29
【问题描述】:

嘿,所以我已经发送了一张支持票去爸爸,但他们并不是很有帮助。在我客户的一个网站的管理面板中,有一个 AJAX 图像上传器。通常我不和 Go Daddy 一起工作,而且这个脚本在其他主机上总是很好用。然而,这个客户迫使我处理 Go Daddy 的系统混乱,我无法让 AJAX 图像上传器正常工作。

问题似乎是 $_SERVER['HTTP_X_FILENAME'] 根本没有定义,即使使用 HTTP 请求将文件发布到 PHP。

在我的 PHP 代码中,我有以下行来获取文件名:

$fn = (isset($_SERVER['HTTP_X_FILENAME']) ? $_SERVER['HTTP_X_FILENAME'] : false);

在 Go Daddy 上它返回 false。另外,如果我 print_r($_SERVER); HTTP_X_FILENAME 甚至没有被定义。

我已检查权限并且所有内容都具有正确的权限。我检查了错误日志,没有产生错误。我已经检查了 php.ini 并且文件上传启用了最大 32mb(比我测试过的任何文件都大)

我现在不知道该去哪里找,因为我的谷歌搜索结果一无所获。 (而且服务器管理员真的不是我的强项)

任何帮助将不胜感激。

谢谢!!

【问题讨论】:

  • 尝试 $_SERVER['X-Filename'] 应该可以工作
  • $_FILES 在这里不合适吗?
  • 我不知道这是否有帮助:stackoverflow.com/questions/13771777/…
  • 试试这个潜在的解决方案 - stackoverflow.com/a/13852336/283366
  • @Satya 我敢肯定 OP 会在 $_SERVER 中看到它,如果它存在的话。此外,PHP / Apache 通过以 HTTP 为前缀并将连字符转换为下划线来规范化 HTTP 标头

标签: php ajax file-upload


【解决方案1】:

好的,我得到了这个工作。不确定使用管理员时如何管理在 pw 上保存文件。他们是直接保存到 assets/files/id/ 文件夹还是在某个地方有 tmp?

    // We check if it is image upload
    $filename = (isset($_SERVER['HTTP_X_FILENAME']) ? $_SERVER['HTTP_X_FILENAME'] : false);

    if ($filename) {
        $this->message("It is a file coming!");
        file_put_contents(  
            'C:/Temp/' . $filename,  
            file_get_contents('php://input')  
        );  
    } else {

        if(!$this->isAjaxPost) throw new WireException("This functionality may only be accessed from AJAX POST at present");

                    // etc etc...


}

现在我可以将文件保存到 C:/Temp/。不确定从这种情况下处理此问题的最佳方法?将其保存到临时文件夹并使用常规 pw API 并保存文件?还是直接保存到 assets/files/id/ 文件夹然后使用 API?我可以轻松地将更多数据(如字段名称)作为 http 标头发送。

如果我们将它直接保存到正确的位置(可能是安全的,因为这是管理员使用),我如何获得正确的路径? $config->paths->files->3242 或类似的东西?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-27
    相关资源
    最近更新 更多