2017-06-07 21 views
0

私は、コース内の各アクティビティに画像が関連付けられ、視覚的に提示される新しいコースフォーマットを開発中です。私はコースフォーマットを作成し、レンダラーをオーバーロードしました。それはすべてうまく機能しました。しかし、イメージはカスタム生成されたものとみなされ、既存のものと将来のものの両方で動作する必要があるため、一般的なコースモジュール形式にいくつかのコードを追加して、イメージのアップロードを可能にします。Moodle:File APIを介してアップロードされたファイルは、表示時に破損する

File APIを動作させるために私が苦労したことは間違いありませんが、現在はすべて正常に動作しています。私のコース形式でのみ追加の見出しがあり、その下に単一の画像をアップロードできます。これはデータベースに保存され、データベースに保存されたcontenthashに従うと完全にデータルートファイルに表示されます。それは、デフォルトの細かい罰金としてフォームにロードされます。しかし、イメージで作業しようとすると、すべてのテストが正常に実行され(.is_valid_img()など)、ファイルをダウンロードするように求められます。しかし、私はそれが壊れていると私のファイルビューアは言う: "クリティカルエラー:PNGファイルではない"。言うまでもなく、私の実際のコースサイトには表示されません。

ファイルを見ると、非常にはっきりとpngです。私は多くの努力をしているし、私の知恵の終わりであるので、私は任意の助けに感謝します。

答えて

1

PNGファイルが送信される前に、ページの出力があるように聞こえます。これはファイルの先頭に追加され、PNGファイルとして機能しなくなります。

ファイルを16進エディターで開き、ファイルの開始を確認することをお勧めします。これはhttps://en.wikipedia.org/wiki/Portable_Network_Graphics#File_headerのように見えるので、その前に余分な文字を探してください。

余分な文字がどこから来たのかは、明確な警告/エラーメッセージ(追跡と修正が容易でなければならない)である可能性があります。あるいは、迷いのあるエコー文があるかもしれません(やはり、かなり簡単に追跡できます)。見つけ出す最悪の問題は、インストールのどこかにあるファイルの "php"タグを開く前に余分な文字があるか、ファイルの最後に閉じタグの後ろにあることです(PHPタグを決して使用しないでください)。これらを見つけると、カスタマイズしたすべてのコードファイルを検索してそれらのファイルを見つけることができます。

+0

あなた、ありがとうございます。はい、それはちょうど無作為のvar_dumpで、画像URLには印刷されましたが、私は考慮しませんでした。なぜなら、私はこの絵のコンテンツがこの場所で生成されると思っていなかったからです。 –

+0

画像のコンテンツはそこでは生成されませんが、サーバーストレージからロードされ、そこからユーザーのブラウザーにプッシュされます。つまり、実際のファイルの内容の前には何も出力しないでください。 – davosmith

+0

ああ、知っておいてよかったと思います。とにかく、助けてくれてありがとう! :) –

関連する問題