0

「GET」http リクエストのヘッダーに x 認証トークンを追加した場合にのみ、ファイルを提供できます (Cookie を使用したくありません)。直接的な結果は、HTML で URL を使用するだけではファイルを呼び出すことができないということです。できれば非同期の JavaScript 呼び出しからファイルを取得する必要があります。

私のクライアントは Meteor なので、HTTP.get メソッドを使用したいと考えています。http.get でファイルを取得する部分は取得しますが、画像の src 属性などに添付する部分は取得しません。

ファイルのダウンロード結果を自分のページで使用したい場合、どのように返せばよいですか? (たとえば、画像の src 属性に添付します)。専用のテンプレートを使用する必要がありますか、それともヘルパーを使用して実現できますか?

編集:私はいくつかの進歩を遂げました。同様の事例「 XMLHttpReques t を使用してダウンロードした画像を表示する方法」への回答に基づいて、応答コンテンツ テキストを base64 でエンコードできることがわかりました。

ここに私の考えがあります。私はヘルパーを使用して img src 属性を返します。クライアント側で使用する場合、http呼び出しは非同期であることを知っているので、デフォルトでプレースホルダー値を返します(最後の行を参照)

これが私のコードです(ヘルパーは img src 属性内で呼び出されます):

    link : function(){

    HTTP.get ("http://localhost:3000" + Files.baseURL + "/" + this.md5,
    {
        headers:{
            "X-Auth-Token": Accounts._storedLoginToken()
        }
        },
        function (error, result) {
            if (error){
                console.log ("an error " + result.statusCode + " occured");
            }
            else
            {
                retval ="";
                        for (var i=0; i<=result.content.length-1; i++)
                        retval += String.fromCharCode(result.content.charCodeAt(i) & 0xff);
                return "data:"+this.contentType+";base64," + encode64(retval)
            }
        })
    return "http://localhost:3000/images/placeholder.png"
    },

このコードは機能しません。http.get 行でエラーがスローされます。"テンプレート ヘルパーの例外: .link@ http://localhost:3000/client/views/uploader/uploader.js?b82cf5a1d421ef6a5a1e4eabaf8327fd1a9f2d75:43:2 "

4

1 に答える 1

0

BraveKenny がアドバイスしたように、デバッグには Firefox ではなく Chrome を使用しました。httpパッケージが欠落しているだけのようです。

于 2015-05-01T13:25:36.663 に答える