我尝试使用以下函数在php上传文件:
public function fileUpload($FILES){
$num_of_uploads = 1;
$max_file_size = 1048576; //can't be larger than 1 MB
$T = array ();
foreach($_FILES["file"]["error"] as $key=>$value){
if($_FILES["file"]["name"][$key] != ""){
if($value == UPLOAD_ERR_OK){
$v = array ();
$origfilename = $_FILES["file"]["name"][$key];
$filename = explode(".", $_FILES["file"]["name"][$key]);
$filenameext = $filename[count($filename) - 1];
$v['name'] = $filename[0];
$v['extension'] = $filename[1];
$v['type'] = $_FILES["file"]["type"][$key];
unset($filename[count($filename) - 1]);
$filename = implode(".", $filename);
$filename = "file__" . time() . "." . $filenameext;
if($_FILES["file"]["size"][$key] < $max_file_size){
$v['content'] = file_get_contents($_FILES["file"]["tmp_name"][$key]);
$T[] = $v;
}else{
throw new Exception($origfilename . " file size inaccepted!<br />");
}
}else{
throw new Exception($origfilename . " Error of upload <br />");
}
}
}
return $T;
}
此函数适用于txt类型,但是当我测试pdf或gif或jpg时,它会返回一个损坏的文件。
答案 0 :(得分:3)
据我所知,file_get_contents()
适用于text/html
类型。
但是,对于其他文件类型,您应首先解析其文本内容,以便在进一步处理中使用它。尝试在记事本中打开任何.pdf
以查看其文字内容。
出于上传目的,请在您的周期中使用move_uploaded_file()
,如下所示:
move_uploaded_file($_FILES["file"]["tmp_name"][$key], $filename);
当然,不试图从上传的文件中获取文字内容。
答案 1 :(得分:1)
要下载文件,您需要设置标题。因此,在函数开始时,尝试为png或jpeg文件设置以下任何标题:
//For png file
header("Content-Type: image/png");
//For jpeg file
header("Content-Type: image/jpeg");