PHP表單上傳文件

通過$_FILES獲得文件

//$_FILES
//name 上傳的文件原文件名
//tmp_name 文件上傳到服務(wù)器的臨時的文件名,上傳后的文件位于該位置,這個是文件
//type 上傳的文件類型
//size 上傳的文件大小
//error 上傳的文件錯誤信息


image.png

html部分在表單中通過 type=file

在Form元素的語法中,EncType表明提交數(shù)據(jù)的格式 用 Enctype 屬性指定將數(shù)據(jù)回發(fā)到服務(wù)器時瀏覽器使用的編碼類型。enctype有三種:
1、application/x-www-form-urlencoded: 窗體數(shù)據(jù)被編碼為名稱/值對。這是標準的編碼格式。
2、multipart/form-data: 窗體數(shù)據(jù)被編碼為一條消息,頁上的每個控件對應(yīng)消息中的一個部分。
3、 text/plain: 窗體數(shù)據(jù)以純文本形式進行編碼,其中不含任何控件或格式字符。
補充(隨便看看就好):orm的enctype屬性為編碼方式,常用有兩種:application/x-www-form-urlencoded和multipart/form-data,默認為application/x-www-form-urlencoded。 當action為get時候,瀏覽器用x-www-form-urlencoded的編碼方式把form數(shù)據(jù)轉(zhuǎn)換成一個字串(name1=value1&name2=value2…),然后把這個字串a(chǎn)ppend到url后面,用?分割,加載這個新的url。 當action為post時候,瀏覽器把form數(shù)據(jù)封裝到http body中,然后發(fā)送到server。 如果沒有type=file的控件,用默認的application/x-www-form-urlencoded就可以了。 但是如果有type=file的話,就要用到multipart/form-data了。瀏覽器會把整個表單以控件為單位分割,并為每個部分加上Content-Disposition(form-data或者file),Content-Type(默認為text/plain),name(控件name)等信息,并加上分割符(boundary)。
下面通過一個上傳文件的實例

image.png

image.png

基本思路就是首先需要上傳數(shù)據(jù),然后存儲數(shù)據(jù),最后輸出數(shù)據(jù)
講三個步驟封裝成三個函數(shù)

if(!empty($_POST['submit'])){
    $filename = upload($_FILES['upload']);
    if($filename){
        $content = htmlspecialchars($_POST['content']);
        $price = htmlspecialchars($_POST['price']);
        saveFile($filename,$content,$price);
    }
}
$fileList = outFile();
function upload($upfile){
    if($upfile['type']=="image/jpeg" || $upfile['type']=="image/jpg" || $upfile['type']=="image/png" || $upfile['type']=="image/gif"){
        if(move_uploaded_file($upfile['tmp_name'],$upfile['name'])){
            return $upfile['name'];
        }else {
            return false;
        }
    }
    
}

function saveFile($filename,$content,$price){
    $line = $filename." ".$content." ".$price."\n";
    $fp =fopen("tp.txt","a+");
    fwrite($fp,$line);
    fclose($fp);
}
function outFile(){
    $fp =fopen("tp.txt","r");
    $line=array();
    while(!feof($fp)){
        $line[]=fgets($fp);
    }
    return $line;
}
?>
<!-- 界面 -->
<div id="homePage">
<form action="" method="post" enctype="multipart/form-data">
    <input type="file" name="upload"/>
    菜名:<input type="text" name="content"/>
    價格:<input type="text" name="price" />
    <input type="submit" name="submit" value="提交"/>
</form>
</div>
<div id="fileList">
<table>
    <tr>
        <td>菜圖</td>
        <td>菜名</td>
        <td>菜價格</td>
    </tr>
    <?php foreach($fileList as $key => $val){
        $fileds = explode(" ",$val);
        if(!empty($fileds[0])){
        ?>
            <tr><td><img src="<?=$fileds[0]?>" width="50" height="50"></td><td><?=$fileds[1]?>    </td><td><?=$fileds[2]?></td></tr>
        <?php }}?>
</table>
</div>
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容