用apache做为代理下载本地pdf文件

本文介绍了如何在CentOS 6.5上使用Apache作为代理服务来提供PDF文件的下载功能。通过YUM安装Apache,并配置虚拟主机指向存放PDF文件的目录。最终用户可以通过浏览器直接访问指定路径来下载PDF文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

   有一些公司会用apache做为代理,下载服务器上的pdf文件。以下是apache做为代理的配置

 

一. 环境

centos6.5  192.168.69.3

 

二. yum安装apache 服务

[zxjr@acrr ~]$ rpm -qa httpd    //查看是否有rpm包安装的apache服务
httpd-2.2.15-60.el6.centos.5.x86_64

[zxjr@acrr ~]$ rpm -e httpd-2.2.15-60.el6.centos.5.x86_64    //卸载rpm包安装的

[zxjr@acrr ~]$ yum -y install httpd httpd-devel    //yum 安装apache服务

[zxjr@acrr ~]$ vim /etc/httpd/conf/httpd.conf    //修改apache配置文件,修改前最好备份

 136 Listen 8888

 277 ServerName 192.168.69.3

1011 <VirtualHost *:8888>     //开启虚拟主机
1012         ServerName 192.168.69.3
1013         DocumentRoot "/contract/zx-contract/pdfcontract"     //此处的目录就是我服务器上存放的pdf文件
1014         <Directory "/contract/zx-contract/pdfcontract">
1015         Options None
1016         AllowOverride None
1017         Order Deny,Allow
1018         Deny from all
1019         Allow from all
1020         </Directory>
1021         ErrorLog "logs/zx-contract-error_log"
1022         CustomLog "logs/zx-contract-access_log" common
1023 </VirtualHost>

[zxjr@acrr ~]$ httpd -t    //检查语法
Syntax OK

[zxjr@acrr ~]$ /etc/init.d/httpd start

[zxjr@acrr ~]$ netstat -lnpt | grep 8888
(No info could be read for "-p": geteuid()=500 but you should be root.)
tcp        0      0 :::8888                     :::*                        LISTEN      -

 

三. 服务器上存放pdf文件

[zxjr@acrr ~]$ cd /contract/zx-contract/pdfcontract/
[zxjr@acrr pdfcontract]$ ls    // 这三个目录都是存放pdf 文件的,三个目录和pdf文件都是由java程序自动生成的。
JKDB  JKDB_per  JKDB_sign
[zxjr@acrr pdfcontract]$ cd JKDB_sign/    //任意进入一个目录
[zxjr@acrr JKDB_sign]$ ls
20170908
[zxjr@acrr JKDB_sign]$ cd 20170908/
[zxjr@acrr 20170908]$ ls
ZXWD040_JKDB_3_ZXWD0403.pdf
[zxjr@acrr 20170908]$ pwd
/contract/zx-contract/pdfcontract/JKDB_sign/20170908

 

四. 浏览器下载pdf文件

http://192.168.69.3:8888/JKDB_sign/20170908/ZXWD040_JKDB_3_ZXWD0403.pdf

注。apache配置文件里已经指定了根目录为:"/contract/zx-contract/pdfcontract   所以浏览器中不用再写次根目录。访问

其他目录下的pdf文件也同一样,浏览器中更改相对应的目录就可以了。

 

### 解决WebView中PDF文件自动下载而非在线预览的方法 对于在WebView中实现PDF文件的在线预览,可以采取多种方法来避免默认情况下浏览器尝试下载PDF文件的行为。一种常见的方式是在服务器端设置正确的MIME类型,并确保客户端能够识别和支持这些类型的文档。 #### 使用`pdf.js`库实现在线预览 为了克服WebView无法直接解析PDF的问题,在前端引入`pdf.js`是一个有效的解决方案[^2]。此JavaScript库允许网页内嵌渲染PDF文档而无需依赖任何插件或外部应用程序的支持。具体做法如下: - **集成`pdf.js`到项目** 如果使用的是UniApp框架,则可以从开源仓库获取适配版本并将其加入工程目录下[^3]: ```bash git clone https://gitee.com/m_eve_admin/uni-app-pdf.git ``` 接着按照官方指南完成必要的初始化工作,比如加载所需的HTML模板以及CSS样式表等资源文件。 - **处理CORS跨域请求** 当通过网络地址访问远程存储上的PDF时可能会碰到同源策略限制导致的内容安全错误。此时应考虑调整API网关配置以支持带有适当响应头(如`Access-Control-Allow-Origin`)的服务端接口;或者改用Blob URL方案绕过该障碍: ```javascript fetch('https://example.com/path/to/document.pdf') .then(response => response.blob()) .then(blob => { const url = window.URL.createObjectURL(blob); document.querySelector('#viewer').src = url; }); ``` 上述代码片段展示了如何创建一个指向本地二进制对象的数据URI供后续操作调用。 #### 配置Web服务器返回合适的HTTP头部信息 除了修改应用逻辑外,还需确认托管静态资产的地方已经设置了恰当的内容协商参数以便告知用户代理程序正确对待所接收的对象类别。特别是针对Adobe Acrobat Reader这类专用查看器而言,默认行为往往取决于Content-Disposition字段的存在与否及其值的形式——inline表示即时展示,attachment则指示另存为动作[^1]。 因此建议核查Nginx/Apache/IIS等相关部署环境下的虚拟主机设定部分是否存在遗漏之处,必要时参照手册补充缺失项。 #### 替代方案:借助原生能力呈现文档 考虑到不同平台间存在的差异性表现,有时单纯依靠H5技术栈难以达成一致性的交互体验效果。这时不妨探索一下由宿主操作系统所提供的更底层级的功能模块作为备选途径之一。例如iOS/macOS中的Quick Look Framework或是Android系统的Intent机制均能较好满足此类需求[^4][^5]。 ```html <!-- HTML 示例 --> <web-view src="about:blank"></web-view> <button id="openPdf">Open PDF</button> <script type="text/javascript"> document.getElementById('openPdf').addEventListener('click', function () { uni.downloadFile({ url: 'http://path-to-your-file', success: (res) => { if(res.statusCode === 200){ uni.openDocument({ filePath: res.tempFilePath, fileType: getFileType('yourfile.pdf'), // 自定义函数用于提取扩展名 success: () => console.log('成功打开'), fail: err => console.error(err), }); } }, fail: error => console.warn(error) }) }); function getFileType(text){ var arr=text+''; var index=arr.lastIndexOf('.'); return arr.substr(index)+''; } </script> ``` 以上介绍了几种可行的技术路线帮助开发者解决WebView环境下PDF文件仅限于离线浏览这一难题。实际开发过程中可根据具体情况灵活选用最适合自己项目的办法实施优化改进措施。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值