在一些时候我们想ajax方式来保存一些PDF文件,尤其是它放在远程服务器上,并且是保存在我们自己的服务器上存储,这个时候我们需要写一段程序来帮助我们完成这个工作,本文介绍了PHP 远程下载PDF文件保存在本地服务器本地化,需要的朋友可以参考下:

html页面代码如下:

<!DOCTYPE html>
<html><head><script data-require="jquery@2.1.1" data-semver="2.1.1" src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script><link rel="stylesheet" href="style.css" /><script src="jquery.binarytransport.js"></script><script src="script.js"></script></head><body>
<button>download pdf</button>
</body>
</html>

script.js代码如下:

$(function() {$("button").click(function() {$.ajax({url: "http://lch.bat.com/aa.pdf",type: "GET",dataType: 'binary',success: function(result) {var blob = new Blob([result], {type:"application/pdf"});var data = new FormData();data.append('file', blob);$.ajax({type: 'POST',url: 'http://lch.demo.com/read.php',data: data,processData: false,contentType: false,success: function (arg) {alert('下载成功');}})}});});
});

jquery.binarytransport.js代码如下:

/**** jquery.binarytransport.js** @description. jQuery ajax transport for making binary data type requests.* @version 1.0**/// use this transport for "binary" data type
$.ajaxTransport("+binary", function(options, originalOptions, jqXHR){// check for conditions and support for blob / arraybuffer response typeif (window.FormData && ((options.dataType && (options.dataType == 'binary')) || (options.data && ((window.ArrayBuffer && options.data instanceof ArrayBuffer) || (window.Blob && options.data instanceof Blob))))){return {// create new XMLHttpRequestsend: function(_, callback){// setup all variablesvar xhr = new XMLHttpRequest(),url = options.url,type = options.type,// blob or arraybuffer. Default is blobdataType = options.responseType || "blob",data = options.data || null;xhr.addEventListener('load', function(){var data = {};data[options.dataType] = xhr.response;// make callback and send datacallback(xhr.status, xhr.statusText, data, xhr.getAllResponseHeaders());});xhr.open(type, url, true);xhr.responseType = dataType;xhr.send(data);},abort: function(){jqXHR.abort();}};}
});

再来看看我的本地读取pdf文件的代码:

<?php
/*** Created by PhpStorm.* User: LCA* Date: 2020/9/28* Time: 9:44*/
//header('Access-Control-Allow-Origin: *');
// 响应类型
header('Access-Control-Allow-Methods:*');
// 响应头设置
header('Access-Control-Allow-Headers:content-type,token,id');
header("Access-Control-Request-Headers: Origin, X-Requested-With, content-Type, Accept, Authorization");if(isset($_FILES['file'])){$fname = "cc.pdf";move_uploaded_file($_FILES['file']['tmp_name'], "/htdocs/demo/" . $fname);echo "写入成功";
}

最后把jquery库文件引进来,远程下载后,本地即可以打开和原始文件内容一模一样,不会出现乱码了。

PHP ajax 远程下载PDF文件保存在本地服务器相关推荐

  1. java用itextPDF生成PDF文件保存至本地并上传至ftp服务器

    标题java用itextPDF生成PDF文件保存至本地并上传至ftp服务器 所需jar :itext-asian-5.2.0.jar,itextpdf-5.5.5.jar,commons-net-3. ...

  2. 使用java生成PDF并保存到本地服务器中

    使用java生成PDF并保存到本地服务器中 1.导入maven <!-- PDF工具包 --><dependency><groupId>com.itextpdf&l ...

  3. html长图转换成pdf,iOS将HTML页面转换成PDF文件保存到本地并分享传输文件

    第一次修改:2017.05.26 修改内容:之前的方法在转化带有图片的html页面时会出现图片缺失问题,由于之前我需要转换的html不包含图片,所以没有发现这一问题,现在增加一个直接将webView转 ...

  4. Java生成PDF文件保存到本地磁盘

    使用IText进行创建 代码 package cn.xx.xx.util;import com.itextpdf.text.*; import com.itextpdf.text.pdf.BaseFo ...

  5. 微信语音保存到本地服务器,文件格式由amr转mp3

    最近开发的微信项目里面需要用到微信语音的功能,结合微信开发文档的网页js接口,语音可以在网页上生成并上传到微信服务器,但是微信服务器保存的时间有限,还是保存到自己的本地服务器比较稳当,这样需要把语音文 ...

  6. 前端接收pdf文件_原生ajax请求获取pdf文件流本地下载(支持谷歌IE)

    项目中要实现本地下载pdf文件,ajax请求获取到文件全路径,如上,a标签href属性赋值跳转,在iframe里面,谷歌浏览器被阻止下载.那只能另想办法.经过几天的摸索和后台调整接口数据流,终于解决. ...

  7. java网页保存pdf_JavaScript+Java实现HTML页面转为PDF文件保存的方法

    JavaScript+Java实现HTML页面转为PDF文件保存的方法 发布于 2017-02-27 09:58:50 | 160 次阅读 | 评论: 0 | 来源: 网友投递 JavaScript客 ...

  8. php+预览和下载pdf文件,vue实现在线预览pdf文件和下载(pdf.js)

    最近做项目遇到在线预览和下载pdf文件,试了多种pdf插件,例如jquery.media.js(ie无法直接浏览) 最后选择了pdf.js插件(兼容ie10及以上.谷歌.安卓,苹果) 强烈推荐改插件, ...

  9. 不用网页另存PDF,浏览器在线简单查找下载PDF文件分享

    移动互联网时代网上公开了很多电子资源,这些PDF文档可以在线查看和下载.平时一些政策或想要了解其他的事情信息,现在可以直接搜到文件不用网页另存为PDF.当然有些文件不允许下载,如果搜到需要的内容只能查 ...

最新文章

  1. 清华大学朱军:深度生成模型、算法和概率编程库(附视频+PPT)
  2. 身份识别协议枚举工具ident-user-enum
  3. BZOJ4921「Lydsy1706月赛」互质序列
  4. List、Vector、ArraryList、LinkedList
  5. tableau实战系列(六)-小面积图表如何完整显示标签
  6. Tidb集群加mysql_TiDB - 快速入门,集群搭建
  7. 23种设计模式之门面模式
  8. java 获取本机ip_linux获取本机IP
  9. Python+matplotlib绘制箱线图并设置异常值、中值、均值显示格式
  10. C语言小算法:ACSII码(多字节)和Unicode(宽字节)互转
  11. 记录一下weui文档地址
  12. 零基础HTML入门教程(21)--表格
  13. 怎么实现html网页爱心动态,想着网页上做动态爱心怎么做
  14. SSL证书的申请流程
  15. Shell脚本——条件语句
  16. linux uac 设备,USB Audio Class (UAC) 分析
  17. 我的创作纪念日(128天)
  18. 上传资料总是显示服务器异常,云盘上传总是服务器异常
  19. Python安装Pillow时出现The headers or library files could not be found for zlib/jpeg错误
  20. CStdioFile,CFile类,文本文件处理(MFC学习园地)

热门文章

  1. python 金字塔_Python金字塔
  2. 期权——risk neutral price
  3. 关于esxi6.5开启虚拟机提示文件被锁定,无法开机
  4. R语言基础知识(1)-数据类型及其常用方法
  5. 忽视警告_企业无法忽视移动革命的6个原因
  6. 计算机专业可以从事测绘行业吗,测绘类专业就业前景怎么样
  7. 实验室安全事故读后感
  8. 游戏脚本引色粉,无脑圈钱攻略
  9. c语言内存和文件处理有关知识
  10. SpringBoot库存管理系统,拿来学习太香了(附源码)