- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我对使用 Symfony 2.1 提供文件有疑问
public function exampleFileAction(){
$response = new Response();
$d = $response->headers->makeDisposition(ResponseHeaderBag::DISPOSITION_ATTACHMENT, 'File.xls');
$response->setContent(file_get_contents('../uploads/Bundle/Files/File.xls'));
$response->headers->set('Content-Disposition', $d);
return $response;
}
我上面的代码工作正常,但是这是这样做的实际方法吗?用file_get_contents获取文件好不好?
谢谢tny
最佳答案
编辑 2013 年 3 月:
对于大文件不应遵循此响应,游戏中有一位新玩家:https://github.com/igorw/IgorwFileServeBundle
它支持 SendFile 将文件下载委托(delegate)给 Apache/Ngnix,这要好得多。
编辑 2013 年 5 月:
好消息:核心中现已提供内置解决方案:BinaryFileResponse 。
<小时/>旧回复:
有一个名为 StreamedResponse
的新 Response 类,它完全符合您想要做的事情,但内存效率更高,并且内核可以很好地处理。
StreamedResponse represents a streamed HTTP response.
A StreamedResponse uses a callback for its content.
The callback should use the standard PHP functions like echo to stream the response back to the client. The flush() method can also be used if needed.
http://symfony.com/doc/master/components/http_foundation/introduction.html#streaming-a-response
因此,对于大文件,您可以在没有 file_get_content 的情况下完成:
<?php
use Symfony\Component\HttpFoundation\StreamedResponse;
use Symfony\Component\HttpFoundation\ResponseHeaderBag;
$response = new StreamedResponse();
$response->setCallback(function () {
$name = 'bigfile.pdf';
$fp = fopen($name, 'rb');
fpassthru($fp);
});
$d = $response->headers->makeDisposition(ResponseHeaderBag::DISPOSITION_ATTACHMENT, 'foo.pdf');
$response->headers->set('Content-Disposition', $d);
$response->send();
关于download - Symfony2.1 服务上传,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11967872/
我正在为 Google Chrome 制作一个使用 Downloads API 的扩展程序。我想从网站下载 .jpg 文件。 我已在 list 中使用了这些权限: "permissions": ["d
在函数 chrome.downloads.download 的文件名参数中使用某些字符开始下载时导致“文件名无效”错误。我在文档中找不到任何信息并替换例如:使用 %3A 或 : ;不起作用。 有问题的
我正在尝试创建一个可以一次下载多个文件的扩展程序。 为了实现这一点,我正在使用 chrome 下载 api,这是代码(使用 AngularJS): var fileDownloadProperties
我在 Android 9 中没有遇到这个问题,在 Android 10 中我选择退出 Legacy Storage。但是在 Android 11 中,我无法打开从下载管理器下载的文件。但是,可以从文件
当我尝试在我的应用程序中使用它时,Chrome 告诉我 chrome.downloads 未定义。 这是一个我尝试下载图像的简单示例... list : { "manifest_version":
我正在客户端生成一些内容,我想使用 chrome.downloads.download 下载生成的内容。请注意,下载工作正常,但不知何故下载的文件不包括新行(我使用添加新行 lineContent +
当我执行 chrome.downloads.download 时, 它下载文件并弹出底部的下载栏并显示它,我可以抑制它吗? 例子: /* some code to suppress download
我正在处理超过 100 000 行的表,并使用 DT 包(开发版本 0.1.56)在 Shiny 应用程序中将其可视化。 此外,我使用 DT 扩展作为:按钮,以下载不同格式的数据。然而,虽然 Scro
我想从我的 Google Chrome 扩展程序中完全保存一个网页。我添加了 "downloads", ""权限并确认以下代码将 Google 页面保存到 google.html . chrome
chrome.downloads.download 的默认行为是下载到默认下载文件夹。如果您更改文件夹,它不会记住它。我们可以保存下一次调用的下载位置吗? 引用文献:https://developer
我正在开发 chrome 扩展,我想为可下载文件设置下载位置。所以我正在使用 chrome.downloads.download API saveAs:true。它在 Windows 操作系统中工作正
在 Android 中使用 StorageReference.getStream() 和在 iOS 中使用 FIRStorageReference.dataWithMaxSize 完成的存储文件下载是
更新 我已经通过使用 Blob URL/Object-URL ( URL.createObjectURL(blob) )解决了这个问题(感谢 @DanielHerr ),但是我仍然很好奇为什么在使用
我正在使用 HTML、CSS 和 JS 构建一个小型网站示例项目。 我有一个按钮,点击后应该下载 PDF 示例数据(现在不需要将文档保存在哪里)。 问题:如何使用 HTML 下载 PDF 文档按钮?
我正在从 data.gov 网站下载数据,在此过程中出现以下两种类型的错误: fileUrl = 8 x64 (build 9200) 你必须切换你的 R,从 32-bit至 64-bit避免'cur
我想检查使用 Selenide download() 方法下载文件,但捕获 FileNotFoundException 和错误“拦截 1 个响应”,尽管文件已下载。 我有按钮,点击它会下载一个 zip
“下载管道工件”和“下载构建工件”之间有什么区别?应该使用哪一个?何时使用? 最佳答案 管道工件: 提供一种在管道中的阶段之间或不同管道之间共享文件的方法。它们通常是构建过程的输出,需要由另一个作业使
我们正在尝试从chrome://webrtc-internals下载日志,该方法是在接受调用后在 Electron 后台打开chrome://webrtc-internals,并在 Electron
好吧,所以我前段时间写了这个函数,它运行良好。 基本上我正在下载一个文件,然后检查 chrome://downloads/中是否有 n 个项目以及文件名是否匹配 this.checkDownload
我正在使用 Node + Express 开发一个简单的网络服务器。让我解释一下我遇到奇怪问题的部分。 使用外部脚本(dropbearkey)我生成一个 key 对,生成的私钥存储在服务器的文件系统上
我是一名优秀的程序员,十分优秀!