Php 标题内容长度无效
我正在做文件下载与重命名它之前。除了尺寸以外,其他都能用。我无法使用设置文件大小Php 标题内容长度无效,php,codeigniter,header,Php,Codeigniter,Header,我正在做文件下载与重命名它之前。除了尺寸以外,其他都能用。我无法使用设置文件大小 header('Content-Length: '); 连我都把它设置为 header('Content-Length: 15444544545'); 它不起作用了。我使用的是PHP codeigniter框架,问题出在哪里 编辑:更多代码: $file_data = array( 'originalName' => $post_info['file_info'][0]['original
header('Content-Length: ');
连我都把它设置为
header('Content-Length: 15444544545');
它不起作用了。我使用的是PHP codeigniter框架,问题出在哪里
编辑:更多代码:
$file_data = array(
'originalName' => $post_info['file_info'][0]['original_name'],
'fakeName' => $post_info['file_info'][0]['file_name'],
'modificationId' => $post_info['file_info'][0]['modification_article_id'],
'extension' => end(explode('.', $post_info['file_info'][0]['original_name'])),
'name' => str_replace(".".end(explode('.', $post_info['file_info'][0]['original_name'])), "", $post_info['file_info'][0]['original_name']),
'filesize' => filesize($post_info['file_info'][0]['file_name'])
);
header('Cache-Control: public');
header('Content-Description: File Transfer');
header('Content-Disposition: attachment; filename=' . $file_data['name'] . '.' . $file_data['extension']);
header('Content-Length: ' . filesize(base_url().$file_data['fakeName']));
// Read file
readfile(base_url().$file_data['fakeName']);
//print_r($file_data);
echo "<script>window.close();</script>";
$file\u data=array(
'originalName'=>$post\u info['file\u info'][0]['original\u name'],
“fakeName”=>$post\u info['file\u info'][0]['file\u name'],
'modificationId'=>$post\u info['file\u info'][0]['modification\u article\u id'],
'扩展名'=>end(分解('.',$post_info['file_info'][0]['original_name']),
“name”=>str_replace(“..”结束(分解(“,$post_info['file_info'][0]['original_name']),”,“,$post_info['file_info'][0]['original_name']),结束,
'filesize'=>filesize($post\u info['file\u info'][0]['file\u name']))
);
标头('Cache-Control:public');
标题(“内容描述:文件传输”);
标题('Content-Disposition:attachment;filename='.$file\u data['name'.....$file\u data['extension']);
标题('Content-Length:'.filesize(base_url().$file_data['fakeName']);
//读取文件
readfile(base_url().$file_data['fakeName']);
//打印(文件数据);
回显“window.close();”;
编辑:解决方案
服务器出现问题您可以这样尝试:
$mm_type="application/octet-stream";
header("Cache-Control: public, must-revalidate");
header("Pragma: hack");
header("Content-Type: " . $mm_type);
header("Content-Length: " .(string)(filesize($fullpath)) );
header('Content-Disposition: attachment; filename="'.$filename.'"');
header("Content-Transfer-Encoding: binary\n");
readfile($fullpath);
错误使用
base\u url()
你的文件存储在哪里
也许您可以尝试使用常量FCPATH
代替调用函数base\u url()
文件大小存储在$file\u data['filesize']
最后,不应该有一行
echo“window.close();”当文件内容输出时,在php脚本中进行编码>。您尝试使用下载\u helper??Sintax:强制下载($filename,$data)
。
在代码中,您也通过URL读取文件。改用文件系统路径。
从控制器操作:
<?php
public function download()
{
//Your code here...
$filePath = realpath(FCPATH.DIRECTORY_SEPARATOR.'uploads/myfile.pdf'); //FakeName????
force_download($file_data['fakeName'], readfile($filePath));
}
不,只是给我发送一个文件,但不显示有关大小的信息以及下载完成前剩余的时间“不工作”如何?你得到一个损坏的文件?0字节文件?完全不同的东西?就像我说的,我并没有得到关于文件大小的信息:它应该显示文件的大小使用头('Content-Length:'。filesize($pathToFile))代码>。但是为了帮助您,请发布您用于发送file.timesplinter的代码,就像我说的-这不起作用。。。即使我在那里设置了数字,它也不起作用。。。
function force_download($filename = '', $data = '')
{
if ($filename == '' OR $data == '')
{
return FALSE;
}
// Try to determine if the filename includes a file extension.
// We need it in order to set the MIME type
if (FALSE === strpos($filename, '.'))
{
return FALSE;
}
// Grab the file extension
$x = explode('.', $filename);
$extension = end($x);
// Load the mime types
if (defined('ENVIRONMENT') AND is_file(APPPATH.'config/'.ENVIRONMENT.'/mimes.php'))
{
include(APPPATH.'config/'.ENVIRONMENT.'/mimes.php');
}
elseif (is_file(APPPATH.'config/mimes.php'))
{
include(APPPATH.'config/mimes.php');
}
// Set a default mime if we can't find it
if ( ! isset($mimes[$extension]))
{
$mime = 'application/octet-stream';
}
else
{
$mime = (is_array($mimes[$extension])) ? $mimes[$extension][0] : $mimes[$extension];
}
// Generate the server headers
if (strpos($_SERVER['HTTP_USER_AGENT'], "MSIE") !== FALSE)
{
header('Content-Type: "'.$mime.'"');
header('Content-Disposition: attachment; filename="'.$filename.'"');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header("Content-Transfer-Encoding: binary");
header('Pragma: public');
header("Content-Length: ".strlen($data));
}
else
{
header('Content-Type: "'.$mime.'"');
header('Content-Disposition: attachment; filename="'.$filename.'"');
header("Content-Transfer-Encoding: binary");
header('Expires: 0');
header('Pragma: no-cache');
header("Content-Length: ".strlen($data));
}
exit($data);
}