技术饭

post方式下载文件解决方案

copylian    1 评论    12852 浏览    2017.03.24

post方式下载文件解决方案,在php中文件下载一般是使用get方式比较多,那么如果想做成post方式应该如何实现呢,今天看了一些博客,然后就自己弄了一下,可以参考一下。

/**
* [aikehou_downall 组装下载数据的id:批量下载]
* @param  {[string]} url [处理数据的url地址]
* @return {[json]}       [返回json格式]
*/
function aikehou_downall(url){
   var ids = [];
   $(".select_ids:checked").each(function(index, el) {
       ids.push($(this).val());
   });

   if(ids.length == 0){
       aikehou_tips('请选择要下载的数据!', 'danger', 'fa fa-close');
       return false;
   }

   //变成字符串
   ids = ids.join(',');

   //发送数据
   aikehou_down(url, ids);
}

/**
* [aikehou_down 文件下载函数]
* @param  {[string]} url [处理数据的url地址]
* @param  {[string]} ids [数据的id字符串]
*/
function aikehou_down(url, ids){
   //移除原始表单
   $("#downloadform").remove();

   //新建表单
   var downform = $("<form>");
   downform.attr({
       id: 'downloadform',
       style: 'display:block',
       method: 'post',
       action: url,
       target: '_blank'
   });

   //获取数组
   ids = ids.split(',');
   if(ids.length == 0){
       return false;
   } else {
       //组装因隐藏值
       for (var i = 0; i < ids.length; i++) {
           downform.append('<input type="hidden" name="downfiles[]" value="' + ids[i] + '" />');
       }
   }

   //将表单放入body中
   $("body").append(downform);

   //表单提交  
   downform.submit();
}

其中,aikehou_down()是单个下载,aikehou_downall()是多个,aikehou_down()函数的作用是生成一个form表单,然后将传过来需要下载的数据写入到hidden的input中,然后提交数据到相应的url。

/**
* [downsqlfiles 压缩下载]
* @return [type] [description]
*/
public function downsqlfiles()
{
if(request()->isPost()){
$data_path = config('system_dbback_path');

//获取数据
$id = input('post.downfiles/a');

//没有数据
if(empty($id)){
$this->error(lang('l_access_error'));
}

//下载数据,新建zip,然后下载并删除
$filetopzip = new \download\Filetozip($data_path, 'sqldown.zip');
$filetopzip->tozip($id);

//单个文件下载
/*$filetozip = new \download\Download($data_path,'aikehou.sql');
$filetozip->getfiles();*/
} else {
$this->error(lang('l_access_error'));
}
}

经过这个php处理之后就可以压缩下载了,文件打包下载:demo.zip



只袄早~~~
感谢你的支持,我会继续努力!
扫码打赏,感谢您的支持!
pos 下载 文件 解决 方案 

文明上网理性发言!