Cum să capturați un fișier text dintr-un câmp PHP. Încărcarea fișierelor pe server folosind PHP
Radiy te bachita pe paginile site-ului. Astăzi vom vorbi despre implementarea importului fișierelor pe server. Subiectul este de a termina tsikava pentru că Există o mulțime de începători care vor să mănânce acest aliment.
Încărcarea fișierelor pe server folosind PHP Este important să vă ușurați munca cu o galerie foto externă sau un design lateral al site-ului web cu ajutorul unui editor (de exemplu TinyMCE). De asemenea, puteți adăuga orice tip de fișiere pe server, în funcție de preferințele dvs.
Pentru a încărca un fișier pe server, trebuie să creați un formular pentru încărcarea fișierelor. În principiu, acest formular nu mai este subdivizat de formularul original cu câmpuri de text, cu excepția faptului că tip nu voi text, A fişier(mai multe dosare le încredințăm) și în formularul propriu-zis se va da atributul enctype="multipart/form-data". Entype Aceasta înseamnă tipul de codare în care browserul blochează parametrii formularului.
Demo: Localizarea fișierelor pe server
Am decis să scriem un formular simplu pentru descărcarea fișierelor pe server. Este semnificativ că ne vom implica doar fisiere grafice tipul s jpeg, png, gif. După ce am stabilit tipurile de fișiere care urmează să fie importate pe server, trebuie să creăm un folder pe server unde ne vom stoca fișierele. Aplicația mea are un folder de imagini, unde stocăm fișierele noastre.
„Iertare nu este un vinnik, fișierul este buff de către serverul de pe server.”, 1 => „Rosemir al fișierului tweeted, distorsionând acceptarea maximă a pinkir-ului, cele mai multe atribuiri la fișierul de configurare UPLOAAD_MAX_FileSize php.ini .", 2 => "Rosair al fișierului, puneți accidentul MAX_FILE_SI în formă HTML.", 3 => "Fișierul nu este inclus în forma originală.", 4 => "Fișierul nu este inclus.", 6 => "Dosarul de timp zilnic. Adăugat în PHP 4.3.10 și PHP 5.0. 3."); //Adică tipurile de fișiere de importat $fileTypes = array("jpg" => "image/jpeg", "png" => "image/png", "gif" => "image/gif"); //Butonul de încărcare este apăsat if(isset($_POST["upload"])) ( // Datele goale sunt verificate dacă(!empty($_FILES))) ( // Datele goale sunt verificate dacă($_FILES[" fișiere ") ]["eroare"] > 0) $err = $errUpload[$_FILES["fișiere"]["eroare"]]; //Verificați tipul fișierului pentru selecție if(!in_array($_FILES["files"][" type"], $fileTypes)) $err = "Acest tip de fișier ". $_FILES["fișiere"]["tip"] ." nu este potrivit pentru import!"; //Dacă nu există milă, atunci fișierul este importat if(empty($err))) ( $type = pathinfo($_FILES["fișiere"]["nume"]); $name = $uploadDir ." /". uniqid("files_") .".". $type["extension"]; move_uploaded_file($_FILES["fișiere"]["tmp_name"],$name); //Renunțarea la POST antet parametri ("Locație: http://". $_SERVER["HTTP_HOST"] ."/less/uploads/uploads.php?name=". $nume); ieșire; ) else echo implode("
", $err); ) ) // Notificare despre transferul cu succes al fișierului pe server if(isset($_GET["nume"]))) echo "
Fişier ".htmlentities($_GET["nume"]) ." Infatuare reușită!
// Afișează imagini din directorul $imgDir = array_values(array_diff(scandir($uploadDir), array("..", ".")))); pentru($i = 0; $i< count($imgDir); $i++) { if($i % 2 == 0) echo ""."\n"; ecou "
"."\n"; ecou " http://". $_SERVER["HTTP_HOST"] ." ";?>
După ce am scris codul și am verificat că totul funcționează, un începător se poate confrunta cu problema includerii fișierelor mari. În acest scop este necesară corectarea reglajului în PHP.INI
; Ora maximă a scriptului skin în secunde max_execution_time = 3000; Numărul maxim de ore pe care un script le poate petrece analizării datelor max_input_time = 400; Cantitatea maximă de memorie pe care o poate gestiona un script (8 MB) memory_limit = 500M ; Dimensiunea maxima Date POST, pe care PHP le acceptă. dimensiune_max_post = 500M; Dimensiunea maximă permisă pentru fișierele care vor fi descărcate. upload_max_filesize = 200M
Adevărat, importanța fișierelor este o caracteristică importantă a site-urilor și site-urilor web bogate, pe care le folosim în fiecare zi. În acest articol vă voi arăta o altă modalitate de a achiziționa fișiere de la va rog ajutati PHP.
Vimogi
Nu este dificil să încărcați fișiere pe server, cu excepția cazului în care există alte câteva detalii care pot fi stocate, altfel încărcarea nu va fi confirmată. În primul rând, trebuie să vă asigurați că setările PHP permit atracție. Întoarce-l pe al tău php.ini fișier și inversați directiva file_uploads care poate fi instalată în Pe.
După ce ați ajustat configurațiile care permit serverului să accepte fișiere descărcate, vă puteți concentra atenția asupra stocării HTML. Pentru a importa fișiere, utilizați formularele HTML din lateral. Este foarte important ca formularele dvs. să utilizeze metoda POST și să setați atributul enctype la multipart/form-data .
<acțiune formular = „upload.php” metoda = „post” enctype = „multipart/form-data” > |
Script scris pentru procesul de animație
Procesul de atașare a unui fișier la un fișier arată astfel:
- Paznicul se uită înapoi Partea HTML Din formularul de import de fișiere;
- Browserul selectează fișierul pe care doriți să îl importați din formular;
- Browserul codifică fișierul și îl forțează ca parte a solicitării POST;
- PHP extrage formularul de prezentare, decodifică fișierul și îl stochează într-un director temporar de pe server;
- Dali Script PHP Mută fișierul în locația de salvare.
De asemenea, pentru ca un utilizator să importe un fișier, este necesar un formular HTML, precum și un script PHP pentru a comunica despre importul fișierelor pe server.
formular HTML
formular HTML furnizează o interfață prin care utilizatorul inițiază achiziția fișierelor. Amintiți-vă, elementul formular este responsabil pentru metoda = POST și nu este responsabil pentru codificarea datelor la trimiterea către server - atributul enctype al valorii multipart/form-data. Poate fi un element de intrare pentru selectarea unui fișier. Ca și pentru orice alt element de formular, este important pentru noi să specificăm valoarea atributului name, astfel încât să ne putem referi la cel din scriptul PHP care creează formularul.
Formularul de achiziție a fișierului arată astfel:
1 |
Varto notează că Browsere diferite Afișează câmpul fișierului în mod diferit. Aceasta nu este o problemă, deoarece corespondenții au auzit deja cum arată câmpul de selecție a fișierelor în browserul lor preferat. Cu toate acestea, deoarece externalitatea este importantă pentru tine, îți recomand să citești acest articol.
Script PHP
Informațiile despre fișierul care este achiziționat sunt stocate în matricea bogată $_FILES. Această matrice este indexată după numele fișierelor aflate în câmpul formular HTML. Plasați următoarele informații despre fișierul skin:
- $_FILES["myFile"]["nume"] - numele de ieșire al fișierului;
- $_FILES["myFile"]["type"] - tip MIME al fișierului;
- $_FILES["myFile"]["size"] - dimensiunea fișierului (în octeți);
- $_FILES["myFile"]["tmp_name"]- Numele fișierului ceasului de timp;
- $_FILES[„myFile”][„eroare”] cod de orice fel în timpul transferului.
Funcția move_uploaded_file() mută fișierul descărcat din locația curentă. Ar trebui să utilizați move_uploaded_file() în loc de copy() și rename() în acest scop, deoarece va trebui să efectuați verificări suplimentare pentru a reconfigura fișierul, astfel încât fișierul să poată fi solicitat efectiv pentru o solicitare HTTP POST suplimentară.
Dacă intenționați să salvați fișierul din nume reale, va trebui să urmați o serie de reguli. Fișierul nu este necesar pentru a elimina caractere precum barele oblice, care se pot bloca în randare. Numele nu trebuie să coincidă deja cu numele Fișiere de bază pentru a nu le rescrie. Înlocuim orice alt simbol decât o literă sau un număr pe fotoliul inferior și adăugăm un număr „în creștere” atunci când adăugăm nume.
Extragerea procesării achiziției de fișiere folosind PHP suplimentar arată astfel:
1 | // directorul pentru salvarea fișierului dacă (! gol ($_FILES [ "fișierul meu" ] ) ) ( // verifică prezența grațierilor la ora îndemnării Vinikla scuze. // Denumirea în siguranță a fișierului // la evadarea numelor de fișiere, se adaugă un număr // Mută fișierul într-o locație permanentă // setați permisiunile pentru noul fișier ecou" Fișierul ". $name. atracții de succes. " ;} |
Verificăm imediat fișierul, care nu conține încălcări fără nicio milă. Apoi, este sigur să denumiți fișierul și apoi să plasați fișierul în directorul rămas folosind move_uploaded_file() . În cele din urmă, setăm drepturile de acces la fișier.
Siguranța alimentară
Majoritatea dintre noi nu ar avea voie să achiziționeze și să salveze fișiere complet necunoscute pe serverul nostru, dar, din păcate, în situația actuală nu este cazul. Prin urmare, este necesar să descrieți o serie de pași care vă vor permite să minimizați riscurile asociate cu securitatea în timpul stocării fișierelor.
Una dintre ele este schimbarea tipului de fișier care vă interesează. Bazându-ne pe valorile stocate în $_FILES[„myFile”][“type”] nu este bine, extensiile de nume de fișiere pot fi extinse cu ușurință. În astfel de situații, este mai bine să analizați fișierul, de exemplu, utilizarea funcției exif_imagetype() vă permite să determinați dacă fișierul care este importat este o imagine cu extensiile GIF, JPEG etc. Deoarece exif_imagetype() nu este disponibil (funcția este o extensie Exif), puteți folosi getimagesize() . Matricea care este rotită depinde de dimensiunea și tipul imaginii.
1 | ...
|
Pentru fișierele non-grafice, puteți utiliza Exec() pentru a face clic pe utilitarul Unix - Fișier. Acest utilitar determină tipul fișierului.
O altă limită de timp pe care o puteți folosi pentru a crește securitatea în timpul achiziției de fișiere este să plasați o limită strictă a dimensiunii cererii POST și a numărului de fișiere care pot fi achiziționate. Pentru a face acest lucru, trebuie să specificați valori specifice pentru directivele upload_max_size , post_max_size și max_file_uploads pentru fișier php.ini.
- upload_max_size înseamnă dimensiunea maximă a fișierelor care pot fi încărcate.
- Pe lângă dimensiune, puteți limita dimensiunea cererii POST utilizând directiva post_max_size.
- max_file_uploads este o nouă directivă (adaugă în versiunea 5.2.12) care limitează numărul de fișiere care vor fi încărcate.
dimensiunea_max._post = 8M |
Al treilea pas (foarte exotic) pe care îl puteți face pentru a minimiza riscul de contaminare a fișierelor este scanarea cu un scaner antivirus. Trebuie adăugat că acest subiect este chiar serios, așa că ar trebui să i se acorde suficient respect atunci când dezvolta site-uri web!
În acest fel, cineva este onorat încărcarea fișierelor pe server folosind PHP. Dacă aveți vreun respect pentru acest articol sau adăugare la acest articol, vă rugăm să le lăsați în comentarii. Vă mulțumim pentru citit!
P.S. Ai un site web pe motorul Joomla și plătești pentru servicii de găzduire? Pentru cei care ating productivitatea maximă a proiectelor pe Internet, puteți încerca găzduirea cu Joomla. Gazduire specializata pentru site-uri de pe Joomla va asigura o munca stabila si eficienta, iar planurile tarifare atractive nu vor priva pe nimeni de nevoile acestuia.
Ultima actualizare: 1/11/2015
Pentru a încărca un fișier pe server, trebuie să creăm un formular cu parametrul enctype="multipart/form-data" și matricea $_FILES. Ok, hai să creăm fișierul upload.php cu pasul urmator:
fișierul dorit
Aici formularul este desemnat cu atributul enctype="multipart/form-data". Formularul conține un câmp special pentru selectarea unui fișier.
Toate fișierele care sunt achiziționate sunt puse într-o matrice asociativă $_FILES. Pentru a determina ce fișiere sunt stocate, puteți utiliza construcția if: if ($_FILES)
Tabloul $_FILES este bidimensional. Putem importa un set de fișiere, iar fiecare fișier importat poate fi identificat printr-o cheie, care este specificată de atributul name.
Dacă elementul pentru stocarea unui fișier pe formular este name="filename", atunci dosar Danemarca Putem elimina virusul $_FILES[„filename”] ca ajutor suplimentar.
Fiecare fișier obiect are propriii parametri pe care îi putem accesa:
$_FILES["fișier"]["nume"] : numele fișierului
$_FILES["fișier"]["tip"]: tastați în loc de fișier, de exemplu imagine/jpeg
$_FILES["fișier"]["dimensiune"] : dimensiunea fișierului în octeți
$_FILES["fișier"]["tmp_name"] : numele fișierului de timp salvat pe server
$_FILES["fișier"]["eroare"]: modificați codul în momentul achiziției
Putem verifica și autenticitatea iertărilor în ceasul ispitei. Deoarece nu avem opțiuni, câmpul $_FILES["filename"]["error"] ar trebui setat la UPLOAD_ERR_OK .
Când un fișier este încărcat pe server, acesta este inițial alocat intervalului de timp și apoi, folosind funcția suplimentară move_uploaded_file(), este mutat în directorul serverului.
Funcția move_uploaded_file() ia doi parametri pentru calea către fișierul de timp încărcat și calea către locul în care doriți să plasați fișierul încărcat.
Obezhennya și nalashtuvannya zavantazhenya
Pentru a determina dimensiunea fișierelor dorite, limita este de 2 MB. Cu toate acestea, puteți personaliza acest afișaj în fișierul de configurare. Acest afișaj poate fi modificat, de exemplu, până la 10 megaocteți. Pentru cine stim din dosar php.ini rândul ofensiv:
Upload_max_filesize = 2M
Schimbați-l în
Upload_max_filesize = 10M
De asemenea, putem configura un folder pentru fișierele sensibile la timp care vă interesează. Pentru cine este dosarul php.ini cunoaștem linia ofensivă:
;upload_tmp_dir =
Schimbați-l în
Upload_tmp_dir = "C:/php/upload"
De asemenea, în directorul php trebuie să creăm un folder de încărcare.
Multi-vantagenă
Script schimbător upload.php astfel încât să încurajezi multă atracție:
$eroare) ( dacă ($eroare == UPLOAD_ERR_OK) ( $tmp_name = $_FILES["încărcări"]["tmp_name"][$key]; $name = $_FILES["încărcări"]["nume"][$ cheie];move_uploaded_file($tmp_name, „$name”); ) ) ) ?>
fișierul dorit
Fiecare câmp de selecție de fișiere are atributul name="uploads", astfel încât serverul vede setul de fișiere încărcate ca o singură matrice.
Apoi folosim o buclă foreach pentru a parcurge toate fișierele și a le salva în directorul site-ului web.
Un supliment pentru încărcarea fișierelor pe server folosind un formular HTML (upload.html) și scriptul upload.php pentru procesare.
Notă: Puteți descărca versiunea comercială a sistemului de captură de fișiere pe server din secțiune. Sistemul vă permite nu numai să încărcați un fișier pe server, ci și să modificați dimensiunea acestuia, la fel.
Cod formular (upload.html)
Formular pentru solicitarea dosarelor