相关疑难解决方法(0)

检测浏览器何时收到文件下载

我有一个页面,允许用户下载动态生成的文件.生成需要很长时间,所以我想显示一个"等待"指标.问题是,我无法弄清楚如何检测浏览器何时收到文件,所以我可以隐藏指标.

我正在以隐藏的形式发出请求,该请求POST到服务器,并针对其结果定位隐藏的iframe.这样我就不会用结果替换整个浏览器窗口.我在iframe上监听"加载"事件,希望在下载完成后它会触发.

我在文件中返回"Content-Disposition:attachment"标题,这会导致浏览器显示"保存"对话框.但浏览器不会在iframe中触发"加载"事件.

我尝试过的一种方法是使用多部分响应.因此它会发送一个空的HTML文件,以及附加的可下载文件.例如:

Content-type: multipart/x-mixed-replace;boundary="abcde"

--abcde
Content-type: text/html

--abcde
Content-type: application/vnd.fdf
Content-Disposition: attachment; filename=foo.fdf

file-content
--abcde
Run Code Online (Sandbox Code Playgroud)

这适用于Firefox; 它接收空的HTML文件,触发"load"事件,然后显示可下载文件的"Save"对话框.但它在IE和Safari上失败了; IE触发"加载"事件但不下载文件,Safari下载文件(名称和内容类型错误),并且不会触发"加载"事件.

一种不同的方法可能是调用启动文件创建,然后轮询服务器直到它准备就绪,然后下载已经创建的文件.但我宁愿避免在服务器上创建临时文件.

有没有人有更好的主意?

javascript mime http

464
推荐指数
11
解决办法
28万
查看次数

如何在单击按钮时让用户下载多个文件?

所以我有一个httpd服务器运行,它有一堆文件的链接.假设用户从文件列表中选择三个文件进行下载,它们位于:

mysite.com/file1 
mysite.com/file2
mysite.com/file3
Run Code Online (Sandbox Code Playgroud)

当他们点击下载按钮时,我希望他们从上面的链接下载这三个文件.

我的下载按钮看起来像:

var downloadButton = new Ext.Button({
  text: "Download",
  handler: function(){
    //download the three files here
  }
});
Run Code Online (Sandbox Code Playgroud)

html javascript apache extjs download

25
推荐指数
4
解决办法
6万
查看次数

在浏览器上显示PDF

我想在存储在我们服务器上的浏览器上显示PDF文件.这是我的代码: -

$path = $_SERVER['DOCUMENT_ROOT'].folder_name.'/resources/uploads/pdf/pdf_label_'.$order['id'].'.pdf';

$filename = 'pdf_label_'.$order['id'].'.pdf';

$file = $path;
$filename = $filename;

  header('Content-type: application/pdf');
  header('Content-Disposition: inline; filename="' . $filename . '"');
  header('Content-Transfer-Encoding: binary');
  header('Accept-Ranges: bytes');
  @readfile($file);
Run Code Online (Sandbox Code Playgroud)

但它在浏览器上返回低于输出:

%PDF-1.4 % 5 0 obj >stream
Run Code Online (Sandbox Code Playgroud)

PDF文件显示:

在此输入图像描述

我在codeignter看来这样做.

我做错了什么?请帮帮我.提前致谢

编辑: -

我做的事情如下:

foreach($orders as $order){

$path = $_SERVER['DOCUMENT_ROOT'].folder_name.'/resources/uploads/pdf/pdf_label_'.$order['id'].'.pdf';

$filename = 'pdf_label_'.$order['id'].'.pdf';

$file = $path;
$filename = $filename;

  header('Content-type: application/pdf');
  header('Content-Disposition: inline; filename="' . $filename . '"');
  header('Content-Transfer-Encoding: binary');
  header('Accept-Ranges: bytes');
  echo file_get_contents($file);

  }
Run Code Online (Sandbox Code Playgroud)

那么如何在浏览器上显示多个文件?

编辑2: -

因此,根据下面的答案,我必须使用phpmerger合并多个PDF文件并显示到浏览器中.我浏览了这个网站http://pdfmerger.codeplex.com/但无法用于codeignter.任何人都可以帮我在我的编码器中使用这个phpmerger

html php pdf codeigniter

10
推荐指数
2
解决办法
4万
查看次数

如何使用javascript下载文件?

您好,我希望能够在按下按钮时下载给定的文件。该文件将通过电话提供。api目前,我将其保存在本地存储中。所以我的文件夹是这样的:

rootFolder
-js file
-html file
-download file (`sample.csv`)
Run Code Online (Sandbox Code Playgroud)

如何创建下载link?到目前为止,我已经尝试过: <a download="sample.csv"></a> 我也尝试过使用onclick事件:

<a download="sample.csv" onclick="download()"></a>

function download|(){
   .....code that calls the `api`
}
Run Code Online (Sandbox Code Playgroud)

我不知道这两种方式如何适合:the downloadapi(如果有)和click事件处理程序(如果您打算在下载时进行其他逻辑处理)。

javascript download

2
推荐指数
2
解决办法
7315
查看次数

标签 统计

javascript ×3

download ×2

html ×2

apache ×1

codeigniter ×1

extjs ×1

http ×1

mime ×1

pdf ×1

php ×1