如何在url中传递长文件名并使用php函数下载文件?

哈马德

我有一个以下函数,用于下载名称作为url中的参数传递的文件。这是代码:

    public function actionDownloadFile($filename)
    {
        $file = Yii::app()->request->getBaseUrl(true) . '/upload/digitaluploads/' . $filename; 
        header('Content-Type: application/octet-stream');
        header('Content-Disposition: attachment; filename="' . basename($file) . '"');
        readfile($file);
    }

当用户从视图中单击下载按钮时,将从视图文件中调用此函数:

<a class="digital-download" href="<?php echo Yii::app()->request->getBaseUrl('true'); ?>/site/downloadfile/filename/<?php echo urlencode($digital_download['filename']); ?>">Click here to download</a>

这适用于没有空格的文件名,将适用于名称为likesomefile.mp3的文件,但不适用于其中包含空格的文件。即,对于名称中包含空格的文件,它将失败'maid with the flaxen hair.mp3'

如您所见,我什至使用urlencode在网址中编码了参数。我也尝试在动作中使用解码,但是我得到的只是残破的页面。

任何人?

路易斯·西米尼(Luis Simioni)

使用此功能可以避免空间和其他可能的问题:

function fullescape($in) 
{ 
  $out = ''; 
  for ($i=0;$i<strlen($in);$i++) 
  { 
    $hex = dechex(ord($in[$i])); 
    if ($hex=='') 
       $out = $out.urlencode($in[$i]); 
    else 
       $out = $out .'%'.((strlen($hex)==1) ? ('0'.strtoupper($hex)):(strtoupper($hex))); 
  } 
  $out = str_replace('+','%20',$out); 
  $out = str_replace('_','%5F',$out); 
  $out = str_replace('.','%2E',$out); 
  $out = str_replace('-','%2D',$out); 
  return $out; 
} 

在这里找到:http : //php.net/manual/en/function.urlencode.php

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何下载长文件名的种子?

来自分类Dev

如何在C#中下载文件名?

来自分类Dev

使用php下载文件,文件存储在文件夹中,文件名存储在数据库中

来自分类Dev

使用ServiceStack HttpResult下载文件:如何为下载的内容指定文件名?

来自分类Dev

下载文件时如何设置文件名?

来自分类Dev

如何下载文件名已更改的文件?

来自分类Dev

使用PowerShell读取下载文件的文件名

来自分类Dev

使用URL /标题文件名的PowerShell Core下载文件

来自分类Dev

下载文件,文件名

来自分类Dev

下载文件,文件名

来自分类Dev

下载文件之前如何从链接中获取文件名?

来自分类Dev

如何在Linux中从URL下载文件

来自分类Dev

使用Java下载文件时如何获取原始文件名

来自分类Dev

c#尝试使用WebClient下载文件名中包含特殊字符的文件

来自分类Dev

使用ftplib下载文件名中带有空格的文件

来自分类Dev

如何在php(yii)中以zip格式下载文件

来自分类Dev

如何使用带有“长文件名”的通配符*?

来自分类Dev

从NSURLSession下载文件名

来自分类Dev

使用长文件名复制

来自分类Dev

如何使用Express从url下载文件?

来自分类Dev

如何在不使用FileTransfer的情况下从Ionic 5中的url下载文件

来自分类Dev

如何使用php下载文件?

来自分类Dev

如何使用php下载文件?

来自分类Dev

如何通过URL传递文件名?

来自分类Dev

如何通过URL传递文件名?

来自分类Dev

如何找到Clojure的加载文件使用的文件名?

来自分类Dev

如何在不知道文件名的情况下指定下载文件夹?

来自分类Dev

如何在PHP中以最佳方式从URL获取带有扩展名的文件名?

来自分类Dev

如何使用PowerShell的FtpWebRequest类从FTP服务器下载文件名中包含井号/井号'#'的文件

Related 相关文章

  1. 1

    如何下载长文件名的种子?

  2. 2

    如何在C#中下载文件名?

  3. 3

    使用php下载文件,文件存储在文件夹中,文件名存储在数据库中

  4. 4

    使用ServiceStack HttpResult下载文件:如何为下载的内容指定文件名?

  5. 5

    下载文件时如何设置文件名?

  6. 6

    如何下载文件名已更改的文件?

  7. 7

    使用PowerShell读取下载文件的文件名

  8. 8

    使用URL /标题文件名的PowerShell Core下载文件

  9. 9

    下载文件,文件名

  10. 10

    下载文件,文件名

  11. 11

    下载文件之前如何从链接中获取文件名?

  12. 12

    如何在Linux中从URL下载文件

  13. 13

    使用Java下载文件时如何获取原始文件名

  14. 14

    c#尝试使用WebClient下载文件名中包含特殊字符的文件

  15. 15

    使用ftplib下载文件名中带有空格的文件

  16. 16

    如何在php(yii)中以zip格式下载文件

  17. 17

    如何使用带有“长文件名”的通配符*?

  18. 18

    从NSURLSession下载文件名

  19. 19

    使用长文件名复制

  20. 20

    如何使用Express从url下载文件?

  21. 21

    如何在不使用FileTransfer的情况下从Ionic 5中的url下载文件

  22. 22

    如何使用php下载文件?

  23. 23

    如何使用php下载文件?

  24. 24

    如何通过URL传递文件名?

  25. 25

    如何通过URL传递文件名?

  26. 26

    如何找到Clojure的加载文件使用的文件名?

  27. 27

    如何在不知道文件名的情况下指定下载文件夹?

  28. 28

    如何在PHP中以最佳方式从URL获取带有扩展名的文件名?

  29. 29

    如何使用PowerShell的FtpWebRequest类从FTP服务器下载文件名中包含井号/井号'#'的文件

热门标签

归档