close
文章出處

文件上傳,拿上傳圖片做個例子

首先要寫個form表單,之前是提交數據的,現在要上傳文件提交圖片,所以要在后面多加一個屬性

然后再選擇文件,最后上傳

來看一下第一個頁面的代碼部分

運行后看一下效果

在這里不同的瀏覽器運行后,會出現不一樣的樣式,但是功能都是一樣的用,點擊瀏覽后,會彈出選擇文件的窗口

隨便選擇一個文件

 

 文件名就會顯示在頁面上,通過點擊上傳經過處理頁面然后提交

接下來再做第二個頁面  shangchuan.php

 第二個頁面提交的因為不是數據了,所以這里就不能用post了

可以使用files數組來取了

來看一下代碼,先輸出一下,看它輸出的都是些什么

點擊上傳

出來的是數組

file數組里面能夠取到的內容  tem_name  后面是文件的路徑,在服務器上暫時存了個臨時文件

如果常理來說只需要再做一步,把文件保存了就可以,但是做程序不能那么簡單的做,得考慮各種因素,各個方面

1、控制上傳文件的類型

2、控制上傳文件的大小

3、防止文件名重復

    修改保存的文件名       (1)用戶名+時間戳+隨機數+文件名    (2)流水號

    使用文件夾存文件防止文件名重復       最常用的是第一種

4、保存文件

 

來看一下shangchuan.php 頁面代碼部分

<?php
//var_dump($_FILES["file"]);   //索引寫它的name值


//判斷文件上傳是否出錯
if($_FILES["file"]["error"])
{
    echo $_FILES["file"]["error"];
}
else
{
    //控制上傳文件類型
    if(($_FILES["file"]["type"]=="image/jpeg" || $_FILES["file"]["type"]=="image/png") && $_FILES["file"]["size"]<1024000)
    {
        //找到文件存放的位置
        $filename = "./file/".date("YmdHis").$_FILES["file"]["name"];  //加 .  拼接
        //轉換編碼格式
        $filename = iconv("UTF-8","gb2312",$filename);
        //判斷文件是否存在
        if(file_exists($filename))
        {
            echo "該文件已存在!";
        }
        else
        {
        //保存文件
        move_uploaded_file($_FILES["file"]["tmp_name"],$filename);                   //移動上傳文件    
        }
    }
    else
    {
        echo "文件類型不正確";
    }
}

在運行前,先建個文件夾,在同一目錄下

用來儲存上傳的圖片

用第一個頁面運行一下,看看能不能運行成功

點擊上傳

然后再去看一下那個文件夾

 

 上傳成功

注明: 如果上傳的這些類型是偽造的,怎么確保保存的是上傳圖片,而不是隨便給的一個路徑

通過   就可以確保,保存的一定是上傳文件

 

 

這句話是從UTF—8,轉換為國標,用iconv方法就可以,如果不轉換的話,有些文件名會有出現亂碼的情況


不含病毒。www.avast.com
arrow
arrow
    全站熱搜

    AutoPoster 發表在 痞客邦 留言(0) 人氣()