PHP ReadFile 空格问题
PHP ReadFile Issues with Spaces
我现在遇到了一个 PHP 的问题。我有一个名为 download.php 的文件,可以安全访问存储在服务器上的私人文件夹中的文件下载。即比 httpd 高 1 级。
代码如下所示。
$Document = new Documents($DID);
$file = $Document->getfilewithdir();
header("Content-Description: File Transfer");
header("Content-length: " . $Document->getfilesize());
header("Content-type: " . $Document->getfiletype());
header("Pragma: public");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Content-disposition: attachment; filename=\"" . basename($Document->getfilename()) . "\"");
readfile($file);
exit;
哪里
$Document->getfilewithdir() returns 类似于 /Applications/MAMP/htdocs/Portal_QCNW/private/portal_files/filename.docx
和
$Document->getfilename() returns 类似于 filename.docx.
包含额外代码:
function setfilename($Val)
{
$this->c_Filename = $Val;
}
function getfilename()
{
return $this->c_Filename;
}
function getfilewithdir()
{
$path_parts = pathinfo($this->geturl());
$file_name = $path_parts['basename'];
return FILELOC . $file_name;
}
如果文件名中没有空格,这一切都很好,但如果文件名中有空格,即文件 name.docx 或文件名 (1).docx,则读取文件语句 returns "failed to open stream"。我该怎么做才能解决这个问题并处理文件名中的空格?
我使用 https://blueimp.github.io/jQuery-File-Upload/ 上传文件,在上传阶段我可能会删除空格。
任何想法和建议都会很棒。
亲切的问候
詹姆斯
感谢您的帮助。我检查了代码并对其进行了简化。因为我传递的是 URL 文件名,所以它被格式化为 url 而不是字符串。
全部排序完毕。
詹姆斯
我现在遇到了一个 PHP 的问题。我有一个名为 download.php 的文件,可以安全访问存储在服务器上的私人文件夹中的文件下载。即比 httpd 高 1 级。
代码如下所示。
$Document = new Documents($DID);
$file = $Document->getfilewithdir();
header("Content-Description: File Transfer");
header("Content-length: " . $Document->getfilesize());
header("Content-type: " . $Document->getfiletype());
header("Pragma: public");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Content-disposition: attachment; filename=\"" . basename($Document->getfilename()) . "\"");
readfile($file);
exit;
哪里
$Document->getfilewithdir() returns 类似于 /Applications/MAMP/htdocs/Portal_QCNW/private/portal_files/filename.docx
和
$Document->getfilename() returns 类似于 filename.docx.
包含额外代码:
function setfilename($Val)
{
$this->c_Filename = $Val;
}
function getfilename()
{
return $this->c_Filename;
}
function getfilewithdir()
{
$path_parts = pathinfo($this->geturl());
$file_name = $path_parts['basename'];
return FILELOC . $file_name;
}
如果文件名中没有空格,这一切都很好,但如果文件名中有空格,即文件 name.docx 或文件名 (1).docx,则读取文件语句 returns "failed to open stream"。我该怎么做才能解决这个问题并处理文件名中的空格?
我使用 https://blueimp.github.io/jQuery-File-Upload/ 上传文件,在上传阶段我可能会删除空格。
任何想法和建议都会很棒。
亲切的问候
詹姆斯
感谢您的帮助。我检查了代码并对其进行了简化。因为我传递的是 URL 文件名,所以它被格式化为 url 而不是字符串。
全部排序完毕。
詹姆斯