接口如何通过PHP将文件以流的方式发送客户端

接口如何通过PHP将文件以流的方式发送客户端,第1张

1、在有模板的基础上,针对客户的定制下载。

2、一些浏览器本身能够表示的文件类型(如txt文件),可以通过将头信好拦稿息Content-Type改为 header("Content-Type: application/force-download")进行强制下载。

3、对于一些动态生成文件,比如TXT/CSV等文件,将临时文件及时删除

<?php

/**

 * 本程序实现了将测试文件[test.pdf]创建副本,并将副本读入

 * 内存,以流的方式发送给客户端浏览器,最终删除副本的 *** 作。

 * 

 * 本文可以实现的需求:

 *   1、在有模板的基础上,针对客户的定制下载。

 *  友孝 2、一些浏览器本身能够表示的文件类型(如txt文件),可以通过将头信息Content-Type

 *      改为 header("Content-Type: application/force-download")进行强制下载。

 *   3、对于一些动态生成文件,比如TXT/CSV等文件,可以将临时文件及时删除

 * @author Densin.Tian@CisternData 2015/05/05

 */

// 文件名扩展名

$fileExName = ".pdf"

 

// 原始文件文件名

$oldFileMainName = "testfile"

 

// 获得时间戳 YYYYMMDDHHMISS

$timestamp = date ( "衡贺YmdHis", time () )

 

// 新文件名

$newFileName = $oldFileMainName . $timestamp

 

 

// 复制文件

if (! copy ( $oldFileMainName . $fileExName, $newFileName . $fileExName )) {

die ( "failed to copy" )

}

 

// 设置下载头信息

header ( "Content-Type: application/pdf" )

header ( "Content-Disposition: attachment filename=20150505.pdf" )

 

// 文件流输出到浏览器

readfile ( $newFileName . $fileExName )

 

// 删除文件

@unlink ( $newFileFullName )

---------------------

直接将文件流内容写入文件,而文件的后缀名设为 pdf 格式就可以了;PHP 不管保存文件流还是文本,都含歼是用这种方式;

$path = "demo.pdf"

$ret  = file_put_contents($path, $arr['data'])

if ($ret) {

    echo '保存成功谈改冲' 歼歼// 然后可以取查看文件

}

$content = $_POST['data']

$fp = fopen('/tmp/newfile.bin','w')

fwrite($fp,$content)

以上例慧羡子是在data参数上传二进制,并档首保存到/tmp/newfile.bin中,解析json用json_decode,然后把前蠢拍二进制的那个值赋给content就可以


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12124003.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存