2

PDFをs3にアップロードし、署名付きURLを使用しています。content-disposition の amazonHeaders を渡します (content-disposition の応答ヘッダーを取得しています)。このために、KNOX の client.js にパッチを適用しました。

var signature = auth.signQuery({
        amazonHeaders: options && options.headers,
        secret: this.secret,
        date: epoch,
        resource: resource,
        verb: (options && options.verb) || 'GET',
        contentType: options && options.contentType,
        token: this.token,
    });

options.headers を渡す

headers = "response-content-disposition:attachment; filename=#{file._id}"

しかし、私は IE でそれを開くことができません。クロムで開くことができます。

content-disposition ヘッダーが本当に必要かどうかはわかりません。ローカル ホスト/expess nodejs server.it からそれを試みると、同じ応答が送信されるためです。そして、IEで自動的に開いています。

ローカルホスト

これは Amazon/S3 からの応答です

ここに画像の説明を入力

4

1 に答える 1

1

スクリーンショットの応答ヘッダーに Content-Disposition ヘッダーが表示されていないため、その部分は機能していませんが、それが IE の問題かどうかはわかりません。

あなたがしたい場合Content-Disposition: attachment

カスタム応答ヘッダーを追加するために knox を (それ以上) 変更する必要はありません。できるよ:

var headers = { 'response-content-disposition': 'attachment;filename=test.pdf'};
var expires = new Date(); expires.setYear(2020);
var url = client.signedUrl('/test.pdf', expires, { qs: headers });

これにより、 https://mikie-knox-test.s3-eu-west-1.amazonaws.com/test.pdf?Expires=1594497470&AWSAccessKeyId=AKIAIW2ON37WUIIUJ2NA&Signature= fUQyOmYuPM2dEMPTY%2FRkssK0oxw%3D&response-content-disposition= attachment% のような URL が得られました3Bファイル名%3Dtest.pdf .

#{file._id}( Rubyソースからのコピーと貼り付けの間違いのように見えるコードには必要ないと思います)。

于 2014-07-11T20:00:23.793 に答える