Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/462.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在浏览器中打开文件的最佳方式是什么_Php_Javascript_Html_Download - Fatal编程技术网

Php 在浏览器中打开文件的最佳方式是什么

Php 在浏览器中打开文件的最佳方式是什么,php,javascript,html,download,Php,Javascript,Html,Download,我知道有几种方法(我知道可能还有更多)可以在用户单击链接后在浏览器中打开文件 使用PHP标头模拟文件下载 使用标记将用户重定向到文件路径 使用javascripts window.location指向文件位置 Iframe标签 对象标记 在浏览器中打开文件的最有效、跨浏览器或最好的方式是什么?或者,大多数公司都用什么?这三种方法都能奏效。但是,如果您想阻止外部域(搜索引擎等)访问您的文件,您应该使用PHP: getfile.php?id=1或getfile.php?name=file.txt

我知道有几种方法(我知道可能还有更多)可以在用户单击链接后在浏览器中打开文件

  • 使用PHP标头模拟文件下载
  • 使用标记将用户重定向到文件路径
  • 使用javascripts window.location指向文件位置
  • Iframe标签
  • 对象标记

在浏览器中打开文件的最有效、跨浏览器或最好的方式是什么?或者,大多数公司都用什么?

这三种方法都能奏效。但是,如果您想阻止外部域(搜索引擎等)访问您的文件,您应该使用PHP:

getfile.php?id=1
getfile.php?name=file.txt


并检查以确保请求来自您的域。

这三个选项都可以使用。但是,如果您想阻止外部域(搜索引擎等)访问您的文件,您应该使用PHP:

getfile.php?id=1
getfile.php?name=file.txt

并检查以确保请求来自您的域。

使用
是最有效的跨浏览器方式

您描述的PHP方法只是模拟一个重定向,它将实现同样的效果

Javascript对于关闭了Javascript的人来说是最难访问的

使用
是最有效的跨浏览器方式

您描述的PHP方法只是模拟一个重定向,它将实现同样的效果


Javascript对于关闭了Javascript的人来说是最难访问的

因为不同的计算机有不同的插件,不同的浏览器和操作系统。如果您希望保持一致,我的建议是您的第一个选项,使用标题指定强制下载文件的内容配置。这将防止某些文件在浏览器内部打开,某些文件在第三方外部程序中打开时出现不一致


这也指非图像文件,如PDF。您应该在浏览器中打开图像。非flash电影也值得怀疑。

因为不同的计算机有不同的插件,不同的浏览器和操作系统。如果您希望保持一致,我的建议是您的第一个选项,使用标题指定强制下载文件的内容配置。这将防止某些文件在浏览器内部打开,某些文件在第三方外部程序中打开时出现不一致

这也指非图像文件,如PDF。您应该在浏览器中打开图像。非flash电影也值得怀疑

使用标记将用户重定向到文件路径

这个。给我一个链接,我可以用浏览器中的处理程序点击打开。或者,我可以右键单击它并将其保存到硬盘

使用标记将用户重定向到文件路径


这个。给我一个链接,我可以用浏览器中的处理程序点击打开。或者,我可以右键单击它并将其保存到硬盘

我认为最好的方法是使用
标记链接到文件,设置属性
target=“\u blank”
,如果用户机器支持在浏览器中打开文档,它将这样做。如果没有,则会提示下载该文件。

我认为最好的方法是使用
标记链接到该文件,设置属性
target=“\u blank”
,如果用户计算机支持在浏览器中打开文档,则会这样做。如果没有,则会提示下载文件。

就我个人而言,最好的方法是创建一个名为
download.php
的脚本,然后将文件散列发送到该脚本,想象一下您的目录布局如下:

/downloads/
    /2010/
        /abc8755ghc7659c75678bf78968.file
        /abc8755ghc7659c73278ef78998.file
        /abc8755ghc7659c75678bf78968.file
    /2009/
        /abc8755ghc7659c75678bf78968.file
        /abc8755ghc7659c75678bf78968.file
然后你有了一个名为download.php的脚本,你可以验证用户的信息,以保护你的实际文件,以防刮刀等

存储没有扩展名的文件是可以的,只要上传文件时,您可以将所有信息存储在数据库中,这样当我们发送文件时,我们就有了内容类型、扩展名、原始文件名等,这样我们就可以正确发送

散列的原因是解析器和刮刀可以很容易地在服务器上找到实际的文件,因此如果刮刀在您的站点周围搜索,然后看到一个名为“My ebook 2010.pdf”的标题,他将无法像
http://mydomain.com/downloads/My 电子书2010.pdf
由于该文件不存在,它存在于
http://mydomain.com/downloads/abc8755ghc7659c75678bf78968.file

安全性始终是最好的措施,而且使用PHP可以在应用程序决定是发送文件还是删除文件之前验证实际用户

PHP示例脚本如下所示:

include 'all.the/files/needed.phhp';

if(!logged_in())
{
    header('Location: /');
    exit;
}

$FileRequest = FileRequest::getInstance();
$User = User::getInstance();

if($FileRequest->isValid)
{
   if($user->canDownload($FileRequest->GetDatabaseID()))
   {
      $FileRequest->SendFile();
      exit;
   }
}

通过这种方式,你可以控制下载的发送,你永远不会透露你的文件位置,而且文件存储在一个很难找到的散列中。

就个人而言,最好的方法是创建一个名为
download.php
的脚本,然后将文件散列发送到该脚本,想象一下你有这样一个目录布局:

/downloads/
    /2010/
        /abc8755ghc7659c75678bf78968.file
        /abc8755ghc7659c73278ef78998.file
        /abc8755ghc7659c75678bf78968.file
    /2009/
        /abc8755ghc7659c75678bf78968.file
        /abc8755ghc7659c75678bf78968.file
然后你有了一个名为download.php的脚本,你可以验证用户的信息,以保护你的实际文件,以防刮刀等

存储没有扩展名的文件是可以的,只要上传文件时,您可以将所有信息存储在数据库中,这样当我们发送文件时,我们就有了内容类型、扩展名、原始文件名等,这样我们就可以正确发送

使用哈希的原因是,解析器和scraper可以很容易地在服务器上找到实际的文件,因此,如果scraper在您的站点周围搜索,然后看到一个名为My ebook 2010.pdf的标题,他将无法像
http://mydomain.com/downloads