php 打包上傳的文件,PHP單文件上傳原理及上傳函數的打包

PHP單文件上傳原理及上傳函數的封裝

服務器(臨時文件)——>指定目錄,當文件進入服務器時它就是臨時文件了,這時操作中要用臨時文件的名稱tmp_name。//在客戶端設置上傳文件的限制(文件類型和大小)是不安全的,因為客戶能通過源代碼修改限制,所以在服務端這里設置限制。//設置編碼為UTF-8,以避免中文亂碼 header('Content-Type:text/html;charset=utf-8');//通過$_FILES接收上傳文件的信息$fileInfo = $_FILES['myFile'];function uploadFile($fileInfo,$uploadPath='uploads',$flag=true,$allowExt=array('jpeg','jpg','png','gif'),$maxSize = 2097152){//判斷錯誤號,只有為0或者是UPLOAD_ERR_OK,沒有錯誤發生,上傳成功if($fileInfo['error']>0){//注意!錯誤信息沒有5switch($fileInfo['error']){case 1:$mes= '上傳文件超過了PHP配置文件中upload_max_filesize選項的值';break;case 2:$mes= '超過了HTML表單MAX_FILE_SIZE限制的大小';break;case 3:$mes= '文件部分被上傳';break;case 4:$mes= '沒有選擇上傳文件';break;case 6:$mes= '沒有找到臨時目錄';break;case 7:$mes= '文件寫入失敗';break;case 8:$mes= '上傳的文件被PHP擴展程序中斷';break;}exit($mes);}$ext=pathinfo($fileInfo['name'],PATHINFO_EXTENSION);//$allowExt=array('jpeg','jpg','png','gif');//檢測上傳文件的類型if(in_array($ext,$allowExt)){exit('非法文件類型');}//檢測上傳文的件大小是否符合規范//$maxSize = 2097152;//2Mif($fileInfo['size']>$maxSize){exit('上傳文件過大');}//檢測圖片是否為真實的圖片類型//$flag=true;if($flag){if(!getimagesize($fileInfo['tmp_name'])){exit('不是真實的圖片類型');}}//檢測是否是通過HTTP POST方式上傳上來if(!is_uploaded_file($fileInfo['tmp_name'])){exit('文件不是通過HTTP POST方式上傳上來的');}//$uploadPath='uploads';//如果沒有這個文件夾,那么就創建一個if(!file_exists($uploadPath)){mkdir( $uploadPath, 0777, true);chmod( $uploadPath, 0777 );}//新文件名唯一$uniName = md5 ( uniqid( microtime(true),true) ).'.'.$ext;$destination = $uploadPath.'/'.$uniName;[email?protected]if(! @move_uploaded_file($fileInfo['tmp_name'], $destination )){exit('文件移動失敗');}//echo '文件上傳成功';//return array(//'newName'=>$destination,//'size'=>$fileInfo['size'],//'type'=>$fileInfo['type']//);return $destination;}?>

相關文章

相關視頻

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/457166.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/457166.shtml
英文地址,請注明出處:http://en.pswp.cn/news/457166.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

celery AttributeError: 'str' object has no attribute 'items'

AttributeError: str object has no attribute items python manage.py celery worker --loglevelinfo 查了好久發現原來是因為以前下的redis版本過高( 3.0.1 ),重裝redis pip install redis2.10.6

equals和==的區別(轉)

基本數據類型,也稱原始數據類型。byte,short,char,int,long,float,double,boolean,他們之間的比較,應用雙等號(),比較的是他們的值。 復合數據類型(類) 當他們用()進行比較的時候,…

Python 中的range,以及numpy包中的arange函數

range函數函數說明: range(start, stop[, step]) -> range object,根據start與stop指定的范圍以及step設定的步長,生成一個序列。  參數含義:start:計數從start開始。默認是從0開始。例如range(5)等價…

php角色權限安全,php – 安全的chmod權限?

新創建的文件和目錄的默認權限由umask環境變量設置.文件的所有者和root可以更改權限.如果您不需要在應用程序中使用chmod,請將其保留在禁用列表中.你應該看看安全性的方式是:現在比我更聰明的人讓chmod成為我應用程序中更安全的部分之一.因此,我將花費我的時間使其他…

namespace! 報錯

在工程文件中url 定義namespace需要 from django.contrib import admin from django.urls import path,include from django.conf.urls import url urlpatterns [path(admin/, admin.site.urls),url(r^liu/,include(myApp.urls,namespaceapp)), ] 在myApp 的urls中 加這句 a…

test.php.bak,MongoDB熱備份工具:解決官方版備份缺陷

賀春旸,凡普金科DBA團隊負責人,《MySQL管理之道:性能調優、高可用與監控》第一、二版作者,曾任職于中國移動飛信、安卓機鋒網。致力于MariaDB、MongoDB等開源技術的研究,主要負責數據庫性能調優、監控和架構設計。工具…

zookeeper工作原理、安裝配置、工具命令簡介

1 Zookeeper簡介Zookeeper 是分布式服務框架,主要是用來解決分布式應用中經常遇到的一些數據管理問題,如:統一命名服務、狀態同步服務、集群管理、分布式應用配置項的管理等等。 ZooKeeper是一個分布式的,開放源碼的分布式應用程序…

流式大數據處理的三種框架:Storm,Spark和Samza

許多分布式計算系統都可以實時或接近實時地處理大數據流。本文將對三種Apache框架分別進行簡單介紹,然后嘗試快速、高度概述其異同。 Apache Storm 在Storm中,先要設計一個用于實時計算的圖狀結構,我們稱之為拓撲(topology&#x…

models.ForeignKey( ,on_delete=models.CASCADE)? ? # 關聯外鍵

# 關聯外鍵 sgrade models.ForeignKey("Grades",on_deletemodels.CASCADE) 版本跟新后忘記加on_deletemodels.CASCADE 報錯困擾了很久 多讀報錯信息 from django.db import models# Create your models here. class Grades(models.Model):gname models.Cha…

java 產生無重復的隨機數,Java創建無重復的隨機數

小編典典最簡單的方法是創建一個可能數字的列表(1..20或任何數字),然后用對其進行混洗Collections.shuffle。然后,只需考慮你想要的許多元素。如果你的范圍最終等于你需要的元素數量(例如,用于洗牌的卡片),則這非常好。如果你想要…

linux_bash_shell_cheat_sheet(自譯)

【說明】 發現錯誤或不足請務必聯系我!!! linux_bash_shell_cheat_sheet.pdf (英文原本以及譯本下載,鏈接失效請私信或郵箱聯系) 轉載于:https://www.cnblogs.com/15ho/p/5947534.html

Day04-循環和列表

循環和列表 一、循環(***) 1.1 概念 廣義:一個周期現象或者重復出現的情況,這種狀態被稱為循環 狹義:在滿足條件的情況下,反復執行某一段代碼,在編程語言中出現的這種現象被稱為循環。被反復執行的這段代碼被稱為循環…

熱血街頭Java,下載_我愛法語 V3.01 多國語言版_6z6z下載站

我愛法語是一款功能強大的法語電子詞典工具。融合了法漢,漢法,法法,英法,法英,英漢,法意等各類詞庫。該工具使用靈活,操作簡單,充分吸收了法漢、漢法、法法、英法、法英、英漢、法意…

【demo練習二】:WPF依賴屬性的練習

2016-10-11 依賴屬性demo小樣&#xff1a; 要求&#xff1a;在窗口中點擊按鈕&#xff0c;利用設置“依賴屬性”把Label和TextBox控件里的屬性值進行改變。 MainWindow.xaml代碼&#xff1a; <Window x:Class"依賴屬性1.MainWindow" xmlns"http://schemas.m…

BZOJ 1087 [SCOI2005]互不侵犯King ——狀壓DP

【題目分析】 沉迷水題&#xff0c;吃棗藥丸。 【代碼】 #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> using namespace std; #define F(i,j,k) for (int ij;i<k;i) #define ll long long int cot[512],c1[512]…

Django中object.all

前言 先拋出一個問題。銀行就相當于一個數據庫&#xff0c;你去銀行取錢存錢辦卡銷卡&#xff0c;是你告訴銀行柜員方便還是你自己去操作電腦辦卡取卡方便&#xff1f;&#xff08;你還不一定會&#xff0c;假設自動存款機還沒發明&#xff09;&#xff0c;object在數據庫中就…

java中為什么設計包裝類,Java 中為什么要設計包裝類

最近文章更新頻率慢了&#xff0c;因為最近在準備暑期實習&#xff0c;之前尋思著一邊復習一邊寫文章&#xff0c;兩全其美。后來發現一篇讀起來比較舒服的文章寫出來加上配圖得花上四五個小時甚至更多&#xff0c;但這個知識點我可能半個小時就能復習完了&#xff0c;春招在即…

bfc

BFC 已經是一個耳聽熟聞的詞語了&#xff0c;網上有許多關于 BFC 的文章&#xff0c;介紹了如何觸發 BFC 以及 BFC 的一些用處&#xff08;如清浮動&#xff0c;防止 margin 重疊等&#xff09;。雖然我知道如何利用 BFC 解決這些問題&#xff0c;但當別人問我 BFC 是什么&…

Python語法異常 Exception

常見異常&#xff1a;Exception 所有異常的基類AttributeError 特性應用或賦值失敗時引發IOError 試圖打開不存在的文件時引發IndexError 在使用序列中不存在的索引時引發KeyError …

Python的Django框架中forms表單類的使用方法詳解

Form Form的驗證思路 前端&#xff1a;form表單 后臺&#xff1a;創建form類&#xff0c;當請求到來時&#xff0c;先匹配&#xff0c;匹配出正確和錯誤信息。 Django的Form驗證實例&#xff1a; 創建project&#xff0c;進行基礎配置文件配置 settings.py settings.py之…