![如何在浏览器中显示文件而不是下载?](https://linux22.com/image/1430413/%E5%A6%82%E4%BD%95%E5%9C%A8%E6%B5%8F%E8%A7%88%E5%99%A8%E4%B8%AD%E6%98%BE%E7%A4%BA%E6%96%87%E4%BB%B6%E8%80%8C%E4%B8%8D%E6%98%AF%E4%B8%8B%E8%BD%BD%EF%BC%9F.png)
我正在使用 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
}
}