finfo


手抄报图片 2019-05-20 13:31:59 手抄报图片
[摘要]finfo篇(1):使用finfo在输入输出中,文件的交互必不可少,比如文件的上传什么的。这里我们来解决一个小问题,就是如何判断用户上传文件的文件类型。举一个应用场面:在我们的Web应用中,比如用户上传头像,要求是png,jpg,gif格式,接收到图片后会根据图片格式类型做不同的头像切割处理,但个

【www.shanpow.com--手抄报图片】

finfo篇(1):使用finfo


在输入输出中,文件的交互必不可少,比如文件的上传什么的。这里我们来解决一个小问题,就是如何判断用户上传文件的文件类型。
举一个应用场面:在我们的Web应用中,比如用户上传头像,要求是png,jpg,gif格式,接收到图片后会根据图片格式类型做不同的头像切割处理,但个别用户会传一些只更改过文件后缀的非标准图片,比如nowamagic.jpg 强行修改成 nowamagic.png,这样程序无法对该类型图片进行切割,切割失败。这个时候就需要对文件进行检测,并且仅仅根据后缀来判断是不行的。
这种这么常见的需求,PHP肯定自带了某些函数来实现的,这个函数就是 finfo_file。
finfo_file
(PHP >= 5.3.0, PECL fileinfo >= 0.1.0)
finfo_file -- finfo::file — Return information about a file,This function is used to get information about a file.
函数很简单,看看官方文档就大概清楚了,这里就举一个使用例子吧,就是上传一张图片,并判断它的类型:
01
<html>
02
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
03
    <head>
04
        <title>文件上传</title>
05
    </head>
06
    <body>
07
    <form accept="" method="post" enctype="multipart/form-data">
08
    <input  type="file" name="img[]" /><br />
09
    <input  type="submit" name="s" /><br />
10
    </form>
11
     
12
<?php
13
    //上传文件信息
14
    $img = $_FILES["img"];
15
    if ($img)
16
    {
17
        //文件存放目录,和本php文件同级
18
        $dir = dirname(__file__);
19
 
20
        $filename = $img["name"][0];
21
        $tempname = $img["tmp_name"][0];
22
 
23
        $savepath = "$dir\\$filename";
24
        $state = move_uploaded_file($tempname, $savepath);
25
        //如果上传成功,预览
26
        if($state)
27
        {
28
            echo "<img src="$filename" alt="$filename" /> ";
29
        }
30
         
31
        $finfo = finfo_open(FILEINFO_MIME_TYPE);
32
        //$mime = finfo_file($finfo, dirname(__FILE__)."/".$filename);
33
        $mime = finfo_file($finfo, $savepath);
34
        echo $mime;
35
 
36
    }
37
?>
38
    </body>
39
</html>
需要注意的是,finfo_file 函数需要 PHP 版本 >= 5.3.0,如果低于 5.3,那么需要到 php.ini 里,将 extension=php_fileinfo.dll 前面的分号去掉来启用。
当然,检测文件类型的方式很多种,后面我们会慢慢讲到。

finfo篇(2):FATFS读取数据问题(实例2)  (amoBBS 阿莫电子论坛)


/*
说明:
*    下面的函数是测试把跟目录中的txt文件读出,并把内容拷贝到在根目录下新建立的a2.txt中
*    下面测试的条件是TF卡中必须有一个.txt的文件,并且.txt文件里面有内容,.txt文件必须在跟目录下
*    通过调用f_read(&fsrc, buffer, sizeof(buffer), &br),然后读取br可以得到读取数据的大小
*    要注意的是f_close(&fsrc);和f_close(&fdst);千万不要搞混
*    作者:Flame
*    测试时间:20130710
*/
/*void OutPutFile(void)
{
unsigned int a;
FILINFO finfo;
DIR dirs;
char path[50]={""};                                                            //目录名为空,表示是根目录
//开启长文件名功能时, 要预先初始化文件名缓冲区的长度
#if _USE_LFN
        static char lfn[_MAX_LFN * (_DF1S ? 2 : 1) + 1];
        finfo.lfname = lfn;
        finfo.lfsize = sizeof(lfn);
#endif
        USART_OUT(USART1,"\n稴TM32开发板文件系统(Tini-FatFS0.08b)启动成功! \n");
        disk_initialize(0);                                                     //fatfs可以管理多个介质的分区, 所以把物理存储介质SST25VF016B标示为0区,相当于磁盘编号
        f_mount(0, &fs);                                                             //将文件系统设置到0区
        if (f_opendir(&dirs, path) == FR_OK)            //读取该磁盘的根目录        
        {
                while (f_readdir(&dirs, &finfo) == FR_OK)           //循环依次读取文件名
                {         
                        if (finfo.fattrib & AM_ARC)                              //判断文件属性是否为存档型         TXT文件一般都为存档型
                        {
                                if(!finfo.fname[0])         break;                         //如果是文件名为空表示到目录的末尾。退出         
                                if(finfo.lfname[0]){USART_OUT(USART1,"\r\n文件名是:\n   %s\n",finfo.lfname);}             //输出长文件名
                                else{USART_OUT(USART1,"\r\n文件名是:\n   %s\n",finfo.fname);}                 //输出8.3格式文件名               
                                                       
                                //if(result1!=NULL||result2!=NULL)//是的话就输出文件的内容
                                {                                                                           
                                        if(finfo.lfname[0]){res = f_open(&fsrc, finfo.lfname, FA_OPEN_EXISTING | FA_READ);}//以读的方式打开文件
                                        else{res = f_open(&fsrc, finfo.fname, FA_OPEN_EXISTING | FA_READ); }//8.3格式文件名 以读的方式打开文件
                                       
                                        res1 = f_open(&fdst, "a2.txt", FA_CREATE_ALWAYS | FA_WRITE);          //以写的方式打开文件,如果不存在,就直接建立,如果存在就覆盖掉
                                        br=1;
                                        for (;;)
                                        {                                                                                                                  //循环读出被打开文件的扇区
                                                for(a=0; a<512; a++) buffer[a]=0;                                                           //因为可以一次读出512字节,先清空数据缓冲区
                                                res = f_read(&fsrc, buffer, sizeof(buffer), &br);                          //将文件内容读出到数据缓冲区  br存储此次读出数据的数量,最大512
                                                USART_OUT(USART1,"%s\n",buffer);                                                          //将缓冲区的内容输出到串口1
                                                if (res || br == 0) break;   // error or eof                                  //判断是否到文件结束
                                                res1 = f_write(&fdst, buffer, br, &bw);                                          //将缓冲区的内容写入到目标文件 也就是a2.txt  br是在读的时候设置了写入的大小,通过查看br可以确定写入数据的多少
                                                if (res1 || bw < br) break;   // error or disk full                  //如果写入时异常,或者磁盘满,退出
                                        }
                                        f_close(&fsrc);                                                                                                           //关闭源文件
                                        //res1 = f_write(&fdst, buffer, br, &bw);在这里可以添加f_write,以便添加其他数据
                                }                                                                                                  
                                f_close(&fdst);//关闭目标文件 本条函数即时保存写入的数据,又是关闭目标文件,如有很多数据要写入,但不需要现在关闭可以调用f_sync函数,但是调用 f_sync前必蠪S_READONLY == 0可用
                        }
                }
        }
}*/

finfo篇(3):xlsfinfo列举当前文件夹里所有的文件与文件夹


功能简介:
列举当前文件夹里(或指定文件夹)所有的文件与文件夹。
Matlab 6.5以后所有版本
使用方法:typ = xlsfinfo(filename)
book.iLoveMatlab.cn
判断文件(filename)是否是Microsof Excel文件。
[typ, desc] = xlsfinfo(filename)把数据表的名称返回到desc中。
[typ, desc, fmt] = xlsfinfo(filename)
Matlab中文论坛
把文件的格式返回到fmt中,比如说CSV or xls等。
xlsfinfo filename简易用法
应用举例:[typ, desc, fmt] = xlsfinfo("myaccount.xls")
book.iLoveMatlab.cn
typ =    Microsoft Excel Spreadsheetdesc =     "Sheet1"    "Income"    "Expenses"fmt =     xlWorkbookNormal 《Simulink与信号处理》
相关函数:xlsread, xlswrite

本文来源:https://www.shanpow.com/xx/303998/

《finfo.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式

相关阅读
  • 圣诞节超美手抄报图片10张【汇编二篇】 圣诞节超美手抄报图片10张【汇编二篇】
  • 消防日手抄报图片内容(合集2篇) 消防日手抄报图片内容(合集2篇)
  • 2023年元旦最火手抄报图片汇编2篇 2023年元旦最火手抄报图片汇编2篇
  • 2023元旦节手抄报图片内容锦集二篇 2023元旦节手抄报图片内容锦集二篇
  • 节约水电手抄报图片内容范文汇总二篇 节约水电手抄报图片内容范文汇总二篇
  • 冬季节约水电简单手抄报图片文字内容范文汇总二篇 冬季节约水电简单手抄报图片文字内容范文汇总二篇
  • 节约水电气的手抄报图片汇编2篇 节约水电气的手抄报图片汇编2篇
  • 美丽中国节水节电手抄报图片内容文字【汇编二篇】 美丽中国节水节电手抄报图片内容文字【汇编二篇】
为您推荐