如何在浏览器中显示文件而不是下载?

如何在浏览器中显示文件而不是下载?

我正在使用 Owncloud(在 Nginx 后面)共享文件。当我生成共享链接时,该链接会将我指向下载页面,或者如果我附加“&download”,它会立即开始下载文件。

我的需求是,像 Github 的“原始文件”选项一样,在浏览器中提供一个文本文件,以便我可以将该文件用作另一个服务(如 draw.io)的输入

这应该是 owncloud 属性,因为该人要求,但我认为我可以使用 Nginx 来解决这个问题。

我可以更改一些标题或其他内容,以便让浏览器显示文件的内容而不是通过附加/my-raw-command到 URL 来下载吗?

例如,如果原始下载网址是这样的:www.example.com/myfile.txt&download,我希望它在浏览器中显示,如果我输入www.example.com/myfile.txt&download/my-raw-command

有人可以给我一些入门建议吗?

答案1

我知道我需要Content-Disposition: ...从响应标头中删除行。由于这比较简单,我通过编辑/破解 OwnCloud 的 PHP 代码解决了这个问题。

lib/private/response.php文件中我更改了setContentDispositionHeader功能如下:

static public function setContentDispositionHeader( $filename, $type = 'attachment' ) {
    if (OC_Request::isUserAgent(array(
            OC_Request::USER_AGENT_IE,
            OC_Request::USER_AGENT_ANDROID_MOBILE_CHROME,
            OC_Request::USER_AGENT_FREEBOX
        ))) {
        header( 'Content-Disposition: ' . rawurlencode($type) . '; filename="' . rawurlencode( $filename ) . '"' );
    } else {
                    // cca-hack-id:make-raw-output-property ###
                    // cca-hack-id:make-raw-output-property ### I needed something like "raw" format of github.com. 
                    // cca-hack-id:make-raw-output-property ###
                    // cca-hack-id:make-raw-output-property ### Usage with an example: 
                    // cca-hack-id:make-raw-output-property ###   1. share a single file and get a public link (MY_PUBLIC_LINK) for the file. 
                    // cca-hack-id:make-raw-output-property ###   2. get the file's direct url (MY_PUBLIC_LINK&download)
                    // cca-hack-id:make-raw-output-property ###   3. append '&raw' to the url: MY_PUBLIC_LINK&download&raw
                    // cca-hack-id:make-raw-output-property ###
                    // cca-hack-id:make-raw-output-property ### If you want to undo this hack, remove all lines which contains 'cca-hack-id:make-raw-output-property' string. 
                    // cca-hack-id:make-raw-output-property ###

                    if (!array_key_exists('raw', $_GET)) {  // cca-hack-id:make-raw-output-property
                header( 'Content-Disposition: ' . rawurlencode($type) . '; filename*=UTF-8\'\'' . rawurlencode( $filename )
                                             . '; filename="' . rawurlencode( $filename ) . '"' );
        } // cca-hack-id:make-raw-output-property
    }
}

相关内容