0

GRAILS を使用して、DB 機能との間で単純なアップロード/ダウンロード ファイルを実装しようとしています。text/html ファイル以外はすべて正常に動作しているようです。

ドメイン:

class Content {
    byte[] file;
    //filesProperties
    String contentType
    String fileName
    Long size

    static constraints = {
        file maxSize: 1024 * 1024 * 20, nullable: true; //20MB
        fileName nullable:true
        size nullable:true
        contentType nullable:true   
    }
}

アクション:

def getFile()
{
    def content = Content.get(params.id)
    response.contentType = content.contentType
    response.setHeader("Content-disposition","attachment;filename="+content.fileName)
    response.contentLength= content.size
    response.outputStream << content.file
    response.outputStream.flush()

}

html ファイルをアップロードした後、すべてがデータベース サイトに表示されます。単純な SELECT は、ファイルが既にアップロードされていることを示しています。HTMLファイルをダウンロードしようとすると、ページが見つかりません(Chrome net::ERR_FILE_NOT_FOUND)。アクション getFile() は、他のコンテンツ タイプに対して適切に機能します。

この方法でhtmlファイルを強制的にダウンロードする(ブラウザに表示しない)可能性はありますか?

ところで: なぜそれを表示する (Content-disposition キーに "attachment" 値のない response.header) も機能しないのですか?

4

1 に答える 1

1

ダウンロードを強制することができます:

response.setHeader("Content-Type: application/force-download");
于 2013-01-24T13:43:20.443 に答える