1

jQuery file uploadというプラグインを使用して、画像をページにアップロードしています。現在、元の画像名をファイル名 ( IMG_1234) としてアップロードします。サーバー上のイメージ名に特定の形式が必要です (例: 1.123456.jpg)

イメージ名を変更するために機能する次の PHP コードを見つけました。

class CustomUploadHandler extends UploadHandler
{
    protected function trim_file_name($name, $type) {
        $name = time()."_1";
        $name = parent::trim_file_name($name, $type);
        return $name;
    }
}

画像をアップロードすると、正しい名前が付けられますが、画像のプレビューへのリンクはundefined. これにより、プラグインを介して画像を削除できなくなります。

変数data.urlundefined... 画像の名前を変更しない元のコードに戻ると、すべて正常に動作します。

このプラグインを使用した経験がある人はいますか? ありがとう!

編集:

少なくとも問題の一部が見つかりました... ダウンロード リンクを返す関数 (削除にも使用されます) は、更新されたファイル名ではなく、元のファイル名を指定しています。私はPHPクラスに本当に慣れていないので、変数の起源と修正方法がわかりません。私が得ることができるどんな助けにも本当に感謝します!

その関数の PHP コードは次のとおりです。

protected function get_download_url($file_name, $version = null, $direct = false) {
    if (!$direct && $this->options['download_via_php']) {
        $url = $this->options['script_url']
            .$this->get_query_separator($this->options['script_url'])
            .'file='.rawurlencode($file_name);
            //  The `$file_name` variable is the original image name (`IMG_1234`), and not the renamed file.  
        if ($version) {
            $url .= '&version='.rawurlencode($version);
        }
        return $url.'&download=1';
    }
    if (empty($version)) {
        $version_path = '';
    } else {
        $version_url = @$this->options['image_versions'][$version]['upload_url'];
        if ($version_url) {
            return $version_url.$this->get_user_path().rawurlencode($file_name);
        }
        $version_path = rawurlencode($version).'/';
    }
    return $this->options['upload_url'].$this->get_user_path()
        .$version_path.rawurlencode($file_name);
}

EDIT 2:オプションに関係があると思い'param_name' => 'files',ます。それが何をするか知っている人はいますか?

4

1 に答える 1

0

でクラスを拡張するのではなく、trim_file_name内部の関数を編集して修正しました。UploadHandler.phpindex.php

于 2013-08-26T21:10:39.617 に答える