2

嘿那里,所以我已经发送了一张支持票去爸爸,但他们不是很有帮助。在我客户的一个网站的管理面板中,有一个 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(比我测试过的任何文件都大)

我不知道现在去哪里看,因为我的谷歌搜索什么都没有。(服务器管理员真的不是我的强项)

任何帮助将非常感激。

谢谢!!

4

1 回答 1

0

好的,我得到了这个工作。不确定使用管理员时如何管理在 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 或类似的东西?

于 2014-01-21T07:53:33.690 回答