# 8.4 主页展示与下载文件功能
##1、主页展示
>客户端
web前端通过Ajax动态想后台请求页面。
http请求方式GET
请求url为/data
传输协议以json数据格式为例:
```json
{
"cmd":"newFile",
"fromId":"0",
"count":"8"
}
```
>服务端
首先应该在nginx.conf里面设置好对/data 的url处理的模块.
```php
location = /data {
fastcgi_pass 127.0.0.1:8085;
fastcgi_index data.cgi;
include fastcgi.conf;
}
```
当然同时fastCGI对应的data.cgi要在后台启动起来
后台服务进程解析json数据,得到cmd,fromId,count等参数
随后从redis数据库中取出每个文件的信息返回给前端。
还是以json格式传输。
```json
{
"games": [
{
"id": "group1/M00/00/00/wKgCbFepUHGAUTOhAP_fjuN0kbA670.pdf",
"kind": 2,
"title_m": "python-网络爬虫.pdf",
"title_s": "文件title_s",
"descrip": "2016-08-09 11:39:24",
"picurl_m": "http://172.16.0.148/static/file_png/pdf.png",
"url": "http://192.168.2.108/group1/M00/00/00/wKgCbFepUHGAUTOhAP_fjuN0kbA670.pdf",
"pv": 1,
"hot": 0
},
{
"id": "group1/M00/00/00/wKgCbFepT0SAOBCtACjizOQy1fU405.rar",
"kind": 2,
"title_m": "阶段测试_STL_数据结构.rar",
"title_s": "文件title_s",
"descrip": "2016-08-09 11:34:23",
"picurl_m": "http://172.16.0.148/static/file_png/rar.png",
"url": "http://192.168.2.108/group1/M00/00/00/wKgCbFepT0SAOBCtACjizOQy1fU405.rar",
"pv": 1,
"hot": 0
},
{
"id": "group1/M00/00/00/wKgCbFepTp2AUnd1AFRAAvu2TSg259.mp3",
"kind": 2,
"title_m": "黄昏.mp3",
"title_s": "文件title_s",
"descrip": "2016-08-09 11:31:35",
"picurl_m": "http://172.16.0.148/static/file_png/mp3.png",
"url": "http://192.168.2.108/group1/M00/00/00/wKgCbFepTp2AUnd1AFRAAvu2TSg259.mp3",
"pv": 5,
"hot": 0
},
{
"id": "group1/M00/00/00/wKgCbFepTmGAQvuXAAEYXfRAMkc937.png",
"kind": 2,
"title_m": "01-nginx-市场占有率.png",
"title_s": "文件title_s",
"descrip": "2016-08-09 11:30:35",
"picurl_m": "http://172.16.0.148/static/file_png/png.png",
"url": "http://192.168.2.108/group1/M00/00/00/wKgCbFepTmGAQvuXAAEYXfRAMkc937.png",
"pv": 2,
"hot": 0
},
{
"id": "group1/M00/00/00/wKgCbFepSKeASREwAAapfc9k6Rc011.jpg",
"kind": 2,
"title_m": "小猫5.jpg",
"title_s": "文件title_s",
"descrip": "2016-08-09 11:06:10",
"picurl_m": "http://172.16.0.148/static/file_png/jpg.png",
"url": "http://192.168.2.108/group1/M00/00/00/wKgCbFepSKeASREwAAapfc9k6Rc011.jpg",
"pv": 1,
"hot": 0
},
{
"id": "group1/M00/00/00/wKgCbFepSKeAOkV4AAY7zSGunKE058.jpg",
"kind": 2,
"title_m": "小猫6.jpg",
"title_s": "文件title_s",
"descrip": "2016-08-09 11:06:09",
"picurl_m": "http://172.16.0.148/static/file_png/jpg.png",
"url": "http://192.168.2.108/group1/M00/00/00/wKgCbFepSKeAOkV4AAY7zSGunKE058.jpg",
"pv": 0,
"hot": 0
},
{
"id": "group1/M00/00/00/wKgCbFepSKeARhoLAAXsKfNoK_k046.jpg",
"kind": 2,
"title_m": "猫4.jpg",
"title_s": "文件title_s",
"descrip": "2016-08-09 11:06:09",
"picurl_m": "http://172.16.0.148/static/file_png/jpg.png",
"url": "http://192.168.2.108/group1/M00/00/00/wKgCbFepSKeARhoLAAXsKfNoK_k046.jpg",
"pv": 0,
"hot": 0
},
{
"id": "group1/M00/00/00/wKgCbFepSKeAADFfAAbuwxC1bYU619.jpg",
"kind": 2,
"title_m": "猫2.jpg",
"title_s": "文件title_s",
"descrip": "2016-08-09 11:06:09",
"picurl_m": "http://172.16.0.148/static/file_png/jpg.png",
"url": "http://192.168.2.108/group1/M00/00/00/wKgCbFepSKeAADFfAAbuwxC1bYU619.jpg",
"pv": 0,
"hot": 0
}
]
}
```
其中每个文件对应id、kind、title_m、title_s、descrip、picurl_m、url、pv、hot等字段。
`id`为通过fastDFS保存文件所返回的分布式最终的file_id字符串,用了记录文件唯一标识的key。
`kind`应该是文件类型。
`title_m` 文件的名称
`title_s` 暂时没有用上。
`descrip` 存放文件上传的时间。
`picurl_m` 存放文件的的图标文件路径
`url` 存放文件存放在fastdfs分布式存储服务器的url地址。
`pv` 文件当前的下载量
`hot` 该文件是否是火爆文件。
然后前端根据文件数据,通过js将文件内容展示出来。即可。
##2、文件下载
文件下载实际上比较容易,因为页面上展示的“下载文件”就已经将封装好的url展示出来,下载文件全部基于浏览器对文件的自动解析,如果是图片那就是展示出来,如果是rar等,那就直接下载。
- 概要
- 1 分布式存储fastDFS
- 1.1 fastDFS 通用介绍
- 1.2 fastDFS安装和使用
- 1.3 基于fastDFS实现分布式
- 2 缓存数据库redis快速搭建
- 2.1 环境安装
- 2.2 redis数据类型
- 2.3 redis订阅发布模式
- 2.4 redis事务
- 2.5 redis备份
- 3 redis详细攻略
- 3.1 redis简介
- 3.2 redis使用场景
- 3.3 redis基本操作
- 3.4 redis数据类型
- 3.4.1 字符串
- 3.4.2 HASH-字典
- 3.4.3 List-列表
- 3.4.4 Set-集合
- 3.4.5 Sorted Set-有序集合
- 3.4.6 订阅-发布
- 3.4.7 事务
- 3.5 redis配置文件
- 3.6 持久化
- 3.7 redis性能测试
- 3.8 redis-C-API
- 3.9 redis-C++-API
- 3.10 总结与建议
- 4 memcache缓存数据库
- 4.1 什么是memcached
- 4.2 memcached的特征
- 4.3 memcached的内存管理
- 4.4 如何使用memcached
- 4.5 memcached参数详解
- 4.6 memcached安装
- 4.7 memcached-C客户端
- 4.8 memcached-C++客户端
- 5 Nginx
- 6 FastCGI
- 6.1 CGI
- 6.2 FastCGI
- 6.3 Nginx与FastCGI
- 7 Nginx上部署fastDFS
- 8 项目概要
- 8.1 上传文件功能
- 8.2 主界面显示与下载文件功能
- 8.3 注册功能
- 8.4 登陆功能
- 8.5 文件分类功能
- 8.6 个人网盘功能
- 8.8 秒传功能