アップロードしたファイルの名前について

アップロードしたファイルの名前について

- 山本 太一 の投稿
返信数: 5

ファイル名に _(アンダーバー)がついたファイルをアップロードするのですが、moodle に表示される名前から _ が消えてしまいます。

手動で名前変更し _ を入力すると保存され表示されるのですが、ファイルをアップロードしてそのままそのファイル名が表示されません。

毎回変えるのは手間なので、どうにかできないでしょうか。

_ を使わないのが一番早いとは思いますが、使いたいので、教えていただきたいです。

よろしくお願いします。

【ファイル名の例】moodle_001_アップロードしたファイルの名前について.pdf など

【利用しているサーバ・moodle】

  • さくら VPS
  • Ubuntu 18.04
  • Moodle 3.10.8+ (Build: 20220107)
  • テーマ:Boost Campus
山本 太一 への返信

Re: アップロードしたファイルの名前について

- Mitsuhiro Yoshida の投稿
画像 Developers 画像 Particularly helpful Moodlers 画像 Translators

Moodle 3.11.7+ (Build: 20220610) およびMoodle 3.9.3 (Build: 20201109) で試してみましたが、アンダーバー付きファイル名のファイルをアップロードした場合、ファイル名のアンダーバーは取り除かれないようです。

現在お使いのMoodleに非標準プラグインをインストールしたり、Moodleプログラムを独自にカスタマイズされていませんでしょうか?

もし、そうでしたら、標準的なMoodleでも同じようにファイル名のアンダーバーが取り除かれるか否かご確認ください。

添付 File name with underscore.png
Mitsuhiro Yoshida への返信

Re: アップロードしたファイルの名前について

- 山本 太一 の投稿
返信ありがとうございます。

フォルダを作成し、そのフォルダに名前に _ のついた pdf ファイル等をアップロードした時には、そのまま _ が残ります。
しかし、コースにファイルをそのままアップロードした場合には、_ が消えてしまいます。

下の画像のような状況です。



よろしくお願いします。
山本 太一 への返信

Re: アップロードしたファイルの名前について

- Mitsuhiro Yoshida の投稿
画像 Developers 画像 Particularly helpful Moodlers 画像 Translators

コースのセクションにアンダースコア (アンダーバー) を含むファイル名のファイルをドラッグ&ドロップした場合にアンダースコアが取り除かれてしまうのを止めたいということですね。

恐らく、何らかの理由で敢えてファイル名に含まれるアンダースコアを取り除く処理を入れてあるのだと思います。どうしても、ファイルのドラッグ&ドロップ時にファイル名のアンダースコアが必要であるとお考えでしたら、以下のプログラム修正でご希望の動作になるかと思います。

修正対象プログラム:
course/dnduploadlib.php

修正箇所:
555行目

[ 修正前 ]
    /**
     * Generate the name of the mod instance from the name of the file
     * (remove the extension and convert underscore => space
     *
     * @param string $filename the filename of the uploaded file
     * @return string the display name to use
     */
    protected function display_name_from_file($filename) {
        $pos = core_text::strrpos($filename, '.');
        if ($pos) { // Want to skip if $pos === 0 OR $pos === false.
            $filename = core_text::substr($filename, 0, $pos);
        }
        return str_replace('_', ' ', $filename);
    }

[ 修正後 ]
    /**
     * Generate the name of the mod instance from the name of the file
     * (remove the extension and convert underscore => space
     *
     * @param string $filename the filename of the uploaded file
     * @return string the display name to use
     */
    protected function display_name_from_file($filename) {
        $pos = core_text::strrpos($filename, '.');
        if ($pos) { // Want to skip if $pos === 0 OR $pos === false.
            $filename = core_text::substr($filename, 0, $pos);
        }
//        return str_replace('_', ' ', $filename);
        return $filename;
    }
添付 File name containing underscore.png
Mitsuhiro Yoshida への返信

Re: アップロードしたファイルの名前について

- 山本 太一 の投稿
返信ありがとうございます。

説明不足で申し訳ありませんでした。

プログラム修正をおこなったことで、私が意図していた通りになりました。

ありがとうございました。
山本 太一 への返信

Re: アップロードしたファイルの名前について

- Sumina Seto の投稿

残念ながら、これが私に関する限り、あなたがそれをする唯一の方法です。 これは、Eメール固有のタイトルを入力するときと同じです。Eメール固有のタイトルは、Eメールに書き留めておく必要があります。そのため、Eメールは常に統一されます。