2

パパに行くためにサポート チケットを送信しましたが、あまり役に立ちません。クライアントの Web サイトの 1 つの管理パネルに、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 を確認しましたが、ファイルのアップロードは最大 32 MB で有効になっています (テストしたどのファイルよりも大きい方法です)。

私のグーグル検索では何も出てこなかったので、どこを見ればいいのかわかりません。(そして、サーバー管理は本当に私の得意ではありません)

どんな助けでも大歓迎です。

ありがとう!!

4

1 に答える 1

0

わかりました、私はこれを機能させました。admin を使用しているときに 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 に答える