php文件上载不同类型的文件

php文件上载不同类型的文件,php,file-upload,Php,File Upload,我尝试使用以下函数在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

我尝试使用以下函数在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;
}
公共函数文件上传($FILES){
$num_of_uploads=1;
$max_file_size=1048576;//不能大于1 MB
$T=array();
foreach($\u FILES[“file”][“error”]作为$key=>$value){
如果($\u FILES[“file”][“name”][$key]!=“”){
如果($value==UPLOAD\u ERR\u OK){
$v=数组();
$origfilename=$\u文件[“文件”][“名称”][$key];
$filename=explode(“.”,$\u文件[“文件”][“名称”][$key]);
$filenameext=$filename[count($filename)-1];
$v['name']=$filename[0];
$v['extension']=$filename[1];
$v['type']=$\u文件[“文件”][“类型”][$key];
取消设置($filename[count($filename)-1]);
$filename=内爆(“.”,$filename);
$filename=“文件\时间()。”..$filenameext;
如果($\u文件[“文件”][“大小”][$key]<$max\u文件大小){
$v['content']=文件获取内容($\u FILES[“file”][“tmp\u name”][$key]);
$T[]=$v;
}否则{
抛出新异常($origfilename。“不接受文件大小!
); } }否则{ 抛出新异常($origfilename.“上载错误
); } } } 返回$T; }

这个函数对txt类型非常有效,但是当我测试pdf、gif或jpg时,它会返回一个损坏的文件。

据我所知,
file\u get\u contents()
text/html
类型很有效。 但是,对于其他文件类型,您应该首先解析它们的文本内容,以便在进一步处理中使用它。尝试打开记事本中的任何
.pdf
,查看其文本内容

为了便于上传,请在您的循环中使用
move\u uploaded\u file()
,如下所示:

move_uploaded_file($_FILES["file"]["tmp_name"][$key], $filename);

当然,不需要尝试从上传的文件中获取文本内容。

据我所知,
file\u get\u contents()
文本/html
类型上运行良好。 但是,对于其他文件类型,您应该首先解析它们的文本内容,以便在进一步处理中使用它。尝试打开记事本中的任何
.pdf
,查看其文本内容

为了便于上传,请在您的循环中使用
move\u uploaded\u file()
,如下所示:

move_uploaded_file($_FILES["file"]["tmp_name"][$key], $filename);

当然,不需要尝试从上传的文件中获取文本内容。

要下载文件,需要设置标题。因此,在函数开始时,尝试为png或jpeg文件设置以下任一标题:

//For png file
header("Content-Type: image/png");
//For jpeg file
header("Content-Type: image/jpeg");

要下载文件,需要设置标题。因此,在函数开始时,尝试为png或jpeg文件设置以下任一标题:

//For png file
header("Content-Type: image/png");
//For jpeg file
header("Content-Type: image/jpeg");

检查php.ini文件的最大文件上载大小和最大帖子大小。确保上传大小不大于该值我对文件大小没有问题,我正在使用70Ko文件进行测试,但它不起作用您遇到了什么错误?我没有错误,但当我下载它时,直接从上传位置访问上传的文件会损坏文档。在文件下载过程中,您可能没有正确设置标题。由于该文档未正确下载/打开。请检查php.ini文件的最大文件上载大小和最大帖子大小。确保上传大小不大于该值我对文件大小没有问题,我正在使用70Ko文件进行测试,但它不起作用您遇到了什么错误?我没有错误,但当我下载它时,直接从上传位置访问上传的文件会损坏文档。在文件下载过程中,您可能没有正确设置标题。由于该文档未正确下载/打开。move_uploaded_file函数必须在第二个参数中包含文件目的地,而不是文件名,move_uploaded_file($_FILES['Filedata']['tmp_name'],$file_src);在这里,我不会将文件保存在特定的目标目录中,但文件名也将作为当前工作目录的目标。如果出于某种原因,您希望使用文件内容直接下载,则需要根据当前文件扩展名正确设置
内容类型
标题。move_uploaded_file函数的第二个参数必须是文件目的地,而不是文件名move_uploaded_file($_FILES['Filedata']['tmp_name'],$file_src);在这里,我不会将文件保存在特定的目标目录中,但文件名也将作为当前工作目录的目标。如果出于某种原因,您希望使用文件内容直接下载,则需要根据当前文件扩展名正确设置
内容类型
标题。