Cum să capturați un fișier text dintr-un câmp PHP. Încărcarea fișierelor pe server folosind PHP

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.

PHP - Încărcați fișiere pe server

Demo: Localizarea fișierelor pe server

Încărcați fotografii 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"; ) echo "

"."\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
2
3
4
5






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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40

// directorul pentru salvarea fișierului
define("UPLOAD_DIR", "/srv/www/uploads/");

dacă (! gol ($_FILES [ "fișierul meu" ] ) ) (
$myFile = $_FILES["myFile"];

// verifică prezența grațierilor la ora îndemnării
if ($myFile [ „eroare” ] !== UPLOAD_ERR_OK) (
ecou "

Vinikla scuze.

" ;
Ieșire;
}

// Denumirea în siguranță a fișierului
$nume = preg_replace ("/[^A-Z0-9._-]/i" , "_" , $myFile [ "nume" ] ) ;

// la evadarea numelor de fișiere, se adaugă un număr
$i = 0;
$parts = pathinfo($nume);
while (fișier_există (UPLOAD_DIR . $nume ) ) (
$i++;
$nume = $parts[„nume fișier”]. „-”. $i . "." . $parts[„extensie”];
}

// Mută ​​fișierul într-o locație permanentă
$success = move_uploaded_file ($myFile ["tmp_name"] ,
UPLOAD_DIR. $nume);
dacă (! $succes ) (
ecou "";
Ieșire;
}

// setați permisiunile pentru noul fișier
chmod(UPLOAD_DIR. $nume, 0644);

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
2
3
4
5
6
7

...
// fișierul este de vină pentru imaginile de pradă
$fileType = exif_imagetype($_FILES["myFile"]["tmp_name"]);
$permis = matrice (IMAGETYPE_GIF, IMAGETYPE_JPEG, IMAGETYPE_PNG) ;
if (! in_array ($fileType, $allowed) ) (
// Tipul de fișier nu este permis
...

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
upload_max_size = 2M
max_file_uploads = 20

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

Selectați fișierul:

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



Cod pentru scriptul de procesare a formularelor (upload.php)

Rezultatul căutării fișierului 1024 * 3 * 1024 ) ( ecou (); ieșire; ) // Verificarea fișierului importat if(is_uploaded_file ($_FILES [„nume fișier” ][ „tmp_name” ])) ( // Dacă fișierul de achiziție are succes, îl mutăm // din directorul curent în directorul final move_uploaded_file ($_FILES [ "nume fișier" ][ "nume_tmp" ], "/cale/la/fișier/" . $_FILES [ "nume fișier" ][ "nume" ]); ) else ( ecou ( „Modificare la dosar”); } ?>

Atributul entype al formularului indică tipul de codare pe care browserul îl va introduce în parametrii formularului. Pentru a încărca fișiere pe server, atributul entype trebuie setat la multipart/form-data. Acest atribut este definit ca application/x-www-form-urlencoded.

Elementul de intrare al acestui formular depinde de tipul fișierului.

După eliminarea cererii HTTP, în loc de fișierul solicitat, aceasta este scrisă într-un fișier de timp, care este creat în directorul serverului specificat pentru fișierele de timp, la fel ca un alt director de non-task-uri din fișierul php.ini (directiva upload_tmp_dir ).

Caracteristicile fișierului dorit sunt disponibile prin intermediul matricei cu două lumi $_FILES.

Scriptul upload.php încarcă un fișier pe server și îl copiază în directorul /path/to/file/.

În unele cazuri, trebuie să limitați dimensiunea fișierului care poate fi încărcat pe server. De exemplu, pentru a permite importarea pe server numai fișiere care nu sunt mai mari de 3 MB, următorul script ar trebui să conțină următorul cod:

1024 * 3 * 1024 ) ( ecou ( „Dimensiunea fișierului depășește trei megaocteți”); Ieșire; ) ... ?>

Dimensiunea maximă a fișierului care poate fi încărcat poate fi specificată și folosind directiva suplimentară upload_max_filesize, care este de obicei de până la 2 MB:

upload_max_filesize ) .. ?>

Formă în mai multe părți

  • Interfețe web ale serviciilor poștale, care vă permit să adăugați atașamente la listă (atașați) și pentru care trebuie să încărcați mai întâi fișierul pe server și numai după care îl puteți adăuga pe foaie;
  • Galerii foto interactive și albume foto care nu pot fi create fără un mecanism de încărcare a fișierelor pe server;
  • Portaluri software gratuite, cum ar fi vikoryst, pentru partajarea fișierelor Diverse programe, etc.

Fișierul este atribuit serverului folosind un formular suplimentar în mai multe părți, în care fișierul este atribuit fișierului. Parametrul enctype indică valoarea multipart/form-data :



Axa este aproximativ aceeași cu formularul cu mai multe părți (puteți încerca și să vedeți rezultatul formularelor cu mai multe părți încărcând un fișier mic pe server):

Formează mai multe părți și folosește metoda de transmisie POST. După cum se poate vedea din partea din față, acest formular are două câmpuri:

  • Câmp pentru a selecta un fișier de descărcat ;
  • Câmp pentru inserarea numelui fișierului, care este responsabil pentru numele de pe server .

Editarea formularelor cu mai multe părți

Mai întâi trebuie să scrieți un script pentru procesarea unui formular cu mai multe părți, trebuie să editați fișierul de configurare php.ini pentru a permite transferul de fișiere pe server.

Fișierul de configurare PHP php.ini conține trei parametri legați de importul fișierelor pe server:

  • file_uploads = Activat - permite încărcarea fișierelor pe server folosind protocolul HTTP;
  • upload_tmp_dir=/tmp – inserează un director pentru salvarea temporară a fișierelor importante;
  • upload_max_filesize=2M - setează numărul maxim de fișiere care vor fi încărcate.

Cum funcționează serverul dvs. web sub nuclee? sistem de operare Linux, atunci trebuie să reporniți serviciul:

repornirea serviciului httpd

Cum gestionează PHP formularele cu mai multe părți? După ce a descărcat fișierul, acesta este salvat în directorul cu timp upload_tmp_dir, numele fișierului este selectat aleatoriu. Apoi creează câteva modificări în matricea superglobală $_FILES. Această matrice conține informații despre fișierul descărcat.

Modificările desemnate pentru fișierele importate depind de versiunea PHP și de configurația de streaming. Superglobal $_FILES este disponibil începând cu PHP 4.1.0. Când directiva de configurare register_globals este setată la pe, vor fi anunțate nume suplimentare. Începând cu versiunea 4.2.0, valorile pentru setările pentru opțiunea register_globals sunt oprit.

În schimb, matricea $_FILES pentru fundul nostru este setată mai jos. Vă rugăm să rețineți că numele corespunzător fișierului de încărcare este transferat aici pentru câmpul de selecție a fișierului, similar cu formularul cu mai multe părți. Desigur, numele câmpului poate fi oricare ar fi acesta.

  • $_FILES["uploadfile"]["name"] - numele fișierului înainte de a fi trimis la server, de exemplu, pict.gif;
  • $_FILES["uploadfile"]["size"] - dimensiunea fișierului primit în octeți;
  • $_FILES["uploadfile"]["type"] - tip MIME al fișierului primit (cum îl poate recunoaște browserul), de exemplu: imagine/gif, image/png, image/jpeg, text/html;
  • (Așa am numit câmpul nume de fișier) - plasați numele fișierului în directorul de timp, de exemplu: /tmp/phpV3b3qY;
  • $_FILES[„încărcare fișier”][„eroare”] - Codul de paradă, din care puteți scoate când fișierul este achiziționat. Cheie ["eroare"] bv a fost actualizat la PHP 4.2.0. Vă puteți familiariza cu codurile generale de beneficii

Odată ce scriptul este finalizat, fișierul ceasului va fi șters. Aceasta înseamnă că suntem obligați să-l copiem în altă parte până când scriptul este finalizat. Algoritmul pentru scriptul robotizat pentru a transfera un fișier pe server este următorul:

Odată ce butonul „Trimite” este apăsat, fișierul va fi încărcat pe server și numele său va fi în numele $_FILES[„uploadfile”][”name”]. În acest caz, scriptul se face vinovat de a copia un fișier din ele $_FILES["uploadfile"]["tmp_name"]în orice director (sunt necesare drepturi de scriere pentru acel director).

Copierea unui fișier este indicată de funcție copie() :

Vickory funcția de copiere copy() mai degrabă decât funcția de mutare:

  • Fișierul ceasului va fi afișat automat;
  • Dacă catalogul orar se află pe un alt site web, va fi afișat un anunț despre lansare.

De exemplu, trebuie să importăm un fișier din directorul de încărcări, care se află în directorul rădăcină al serverului web (în directorul DocumentRoot).

// Să creăm un catalog pentru fiecare ciudatenie. Așa cum a fost deja creat,
// Nu ne interesează modificarea, atâta timp cât este accelerată de operatorul @:

@mkdir("încărcări", 0777);

// Copiați fișierul din /tmp în încărcări
// Numele fișierului va fi același ca înainte de a fi trimis la server:

Copiați($_FILES["uploadfile"]["tmp_name"],"uploads/".basename($_FILES["uploadfile"]["nume"])));

Cu Linux, totul este mult mai complicat - trebuie să oferim drepturi de acces la directorul de încărcări. Shvidshe pentru totul într-o astfel de situație, funcție mkdir() Nu vreau să întreb pentru că nu avem drepturi de scriere în directorul DocumentRoot (și anume /var/www/html sau /home/httpd/html). Înregistrați-vă în sistem ca utilizator root, creați directorul de încărcări și schimbați proprietarul și drepturile de acces după cum urmează:

// Creați directorul de încărcări

// Instalează numele liderului apache și grupului său - același apache:

Chown apache:încărcări apache

// Înregistrare separată pentru tot (777) + setarea bitului de blocare (1):

Chmod 1777 zavantazhenya

Dimensiunea fișierului poate fi limitată, puteți edita fișierul .htaccess și limita accesul la directorul de încărcări - specificați fie anumiți utilizatori care pot accesa directorul, fie adrese IP.

Acum, axa poate încărca fișiere pe server.

Scrierea unui script PHP pentru importarea fișierelor pe server


// Director unde acceptăm fișierul:
$uploaddir = "./fișiere/";
$uploadfile = $uploaddir. nume de bază($_FILES["uploadfile"]["nume"]);

// Copiați un fișier dintr-un director pentru salvarea în timp util a fișierelor:
if (copiere ($ _FILES [ "uploadfile" ][ "tmp_name" ], $uploadfile ))
{
ecou "

Fișierul a fost descărcat cu succes pe server

" ;
}
altfel (eco "

Milă! Este imposibil să încărcați un fișier pe server!

"
; Ieșire; )

// Afișează informații despre fișierul importat:
ecou "

Informații despre solicitările către fișierul serverului:

"
;
ecou "

Numele original al fișierului descărcat: ".$ _FILES [ „uploadfile” ][ „nume” ]. "

" ;
ecou "

Tipul MIME al fișierului solicitat: ".$ _FILES [ „uploadfile” ][ „type” ]. "

" ;
ecou "

Dimensiunea fișierului descărcat în octeți: ".$ _FILES [ „uploadfile” ][ „size” ]. "

" ;
ecou "

Nume fișier de sincronizare: ".$ _FILES [ „uploadfile” ][ „tmp_name” ]. "

" ;

?>

Achiziția mai multor fișiere poate fi implementată folosind valori diferite, de exemplu, valori diferite de nume pentru eticheta de intrare.

Există, de asemenea, capacitatea de a extrage automat informații organizate într-o matrice despre un număr de fișiere care pot fi accesate imediat. Pentru a implementa această funcționalitate, utilizați aceeași sintaxă pentru trimiterea unei matrice dintr-un formular HTML ca și pentru câmpurile de selectare și casetă de selectare multiple:


Trimite aceste fișiere:






Dacă se trimite un astfel de formular, matricele $_FILES["userfile"] , $_FILES["userfile"]["nume"] și $_FILES["userfile"]["size"] vor fi inițializate (de asemenea ca $HTTP_POST_FILES pentru PHP 4.1.0 și versiuni ulterioare versiuni anterioare). Dacă directiva de configurare register_globals este setată la on , modificările globale asociate vor fi de asemenea inițializate. Fiecare dintre aceste modificări va fi indexată numeric printr-o serie de valori similare pentru fișierele primite.

Să presupunem că fișierele /home/test/some.html și /home/test/file.bin au fost criptate. De data aceasta, valoarea $_FILES["userfile"]["name"] are valoarea some.html , iar valoarea $_FILES["userfile"]["name"] are valoarea file.bin . În mod similar, modificați $_FILES["userfile"]["size"] pentru a se potrivi cu dimensiunea fișierului some.html și așa mai departe.

Schimbați $_FILES["userfile"]["name"] , $_FILES["userfile"]["tmp_name"], $_FILES["userfile"]["size"] și $_FILES["userfile"]["type"] vor fi de asemenea inițializate.

Visnovok:

După cum știți, organizarea transferului de fișiere pe server nu este atât de dificilă. Este mai ușor să se asigure nivelul necesar de securitate; fișierele rămase stocate pe server pot fi folosite de actori rău intenționați pentru a ataca serverul. Despre cei cum să asigure nivelul necesar de securitate, lucrul cu Încărcări, minune.



<<< Назад Zmist Înainte >>>
Mai multă mâncare și așa mai departe fără a înțelege - cerem cu amabilitate pentru a noastră

 

 

Tse tsikavo: