当前位置:Gxlcms > PHP教程 > php怎么下载pdf 转存本地

php怎么下载pdf 转存本地

时间:2021-07-01 10:21:17 帮助过:7人阅读

php下载pdf转存本地的实现方法:首先创建html页面代码以及script.js代码;然后创建本地读取pdf文件的PHP代码;最后把jquery库文件引进来,进行远程下载即可。

本文操作环境:Windows7系统、PHP7.1版,DELL G3电脑

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

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

html页面代码如下:

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <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>
  5. <link rel="stylesheet" href="style.css" />
  6. <script src="jquery.binarytransport.js"></script>
  7. <script src="script.js"></script>
  8. </head>
  9. <body>
  10. <button>download pdf</button>
  11. </body>
  12. </html>

script.js代码如下:

  1. $(function() {
  2. $("button").click(function() {
  3. $.ajax({
  4. url: "http://lch.bat.com/aa.pdf",
  5. type: "GET",
  6. dataType: 'binary',
  7. success: function(result) {
  8. var blob = new Blob([result], {type:"application/pdf"});
  9. var data = new FormData();
  10. data.append('file', blob);
  11. $.ajax({
  12. type: 'POST',
  13. url: 'http://lch.demo.com/read.php',
  14. data: data,
  15. processData: false,
  16. contentType: false,
  17. success: function (arg) {
  18. alert('下载成功');
  19. }
  20. })
  21. }
  22. });
  23. });
  24. });

jquery.binarytransport.js代码如下:

  1. /**
  2. *
  3. * jquery.binarytransport.js
  4. *
  5. * @description. jQuery ajax transport for making binary data type requests.
  6. * @version 1.0
  7. *
  8. */
  9. // use this transport for "binary" data type
  10. $.ajaxTransport("+binary", function(options, originalOptions, jqXHR){
  11. // check for conditions and support for blob / arraybuffer response type
  12. if (window.FormData && ((options.dataType && (options.dataType == 'binary')) || (options.data && ((window.ArrayBuffer && options.data instanceof ArrayBuffer) || (window.Blob && options.data instanceof Blob)))))
  13. {
  14. return {
  15. // create new XMLHttpRequest
  16. send: function(_, callback){
  17. // setup all variables
  18. var xhr = new XMLHttpRequest(),
  19. url = options.url,
  20. type = options.type,
  21. // blob or arraybuffer. Default is blob
  22. dataType = options.responseType || "blob",
  23. data = options.data || null;
  24. xhr.addEventListener('load', function(){
  25. var data = {};
  26. data[options.dataType] = xhr.response;
  27. // make callback and send data
  28. callback(xhr.status, xhr.statusText, data, xhr.getAllResponseHeaders());
  29. });
  30. xhr.open(type, url, true);
  31. xhr.responseType = dataType;
  32. xhr.send(data);
  33. },
  34. abort: function(){
  35. jqXHR.abort();
  36. }
  37. };
  38. }
  39. });

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

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

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

推荐学习:《PHP视频教程》

以上就是php怎么下载pdf 转存本地的详细内容,更多请关注gxlcms其它相关文章!

人气教程排行