Logica din spatele încărcării fișierelor pe server: php, javascript și ajax

O resursă web este un "punct" în World Wide Web. Informațiile afișate pe acesta sunt de obicei prezentate static, iar vizitatorul le vizualizează. Puteți specifica un link către un document sau o altă resursă, iar un vizitator va descărca fișierul cu informații sau va urma link-ul.

Instrumentele simple sunt folosite pentru a trimite informații către sau a le primi de la un server. Dar utilizarea lor sensibilă și logica convenabilă de utilizare nu este atât de simplă, atunci când trebuie să organizați o prelucrare sigură, stabilă și fiabilă a datelor.

Descărcarea unui fișier

Avem o idee simplă: există upload și download. Primul este de a trimite un fișier către un server, al doilea este de a-l primi. Pentru prima sarcină, informațiile pot fi pur și simplu afișate într-un browser, într-o casetă de pe o pagină sau prin furnizarea unui link către o resursă de informații. Pentru a implementa cea de-a doua sarcină, trebuie doar să scrieți un formular pentru încărcarea fișierului și codul pentru gestionarea acestuia pe server.

Instrumente simple de descărcare

În acest exemplu (1) - două variante de link (fără a utiliza PHP) pentru descărcarea fișierelor de pe server, (2) - formular pentru transferul de fișiere pe server. Aici PHP este fundamental. Se utilizează o logică de încărcare mai avansată decât cea obișnuită.

În general, este suficient să scrieți forma de mai sus în codul paginii și să asigurați manipularea array-ului $_FILES.

Salvarea fișierului încărcat

Verificarea numelui fișierului (funcția scCheckFileName) este opțională, dar este bună pentru siguranță și securitate. Definiți reguli pentru a oricărui fișier încărcat - gaj funcționare fiabilă Resurse web și tratament respectuos al vizitatorului.

Încărcați logica pe server

Găzduirea nu este același lucru cu găzduirea, dar utilizarea literelor rusești și a unor caractere în numele fișierelor - este plină de pericole. El poate "scrie" fișierul, dar apoi "nu-l poate" citi sau șterge. Pentru a evita ambiguitățile, cel mai bine este să redenumiți fișierul și să îl salvați sub un nume pe care orice hoster îl va accepta în mod corespunzător.

În acest context, încărcarea de fișiere pe server: PHP + MySQL. Fișierul este încărcat cu ajutorul limbajului. Asocierea dintre numele real al fișierului și numele unic al fișierului se face automat de către baza de date. Cea mai simplă soluție, cum să obțineți numele real al fișierului, codul său MD5 este o secvență unică de 32 de octeți. Atunci când se efectuează o încărcare de fișiere pe server, PHP este "activat" pe server prin AJAX.

Rularea PHP prin AJAX

Aici, scfCheckFile() codifică numele real al fișierului, generează un cod MD5 unic și rulează mecanismul de transfer de date prin AJAX. În acest moment, serverul nu încarcă efectiv fișierul, ci doar verifică unicitatea acestuia. În cazul în care nu se găsește un astfel de fișier, se generează un nou nume de fișier și se face o intrare în tabelul de intrare pentru începerea descărcării.

Funcția scfGetFile() confirmă că fișierul a fost încărcat și actualizează înregistrarea.

Rezultat: fișier descărcat, înregistrare tabelară creată. Încărcarea de fișiere pe server cu PHP & AJAX folosind JavaScript - o soluție bună și fiabilă.

Mecanism AJAX pentru încărcarea fișierelor

Transferul de date AJAX este inițiat de InitXML(). Încărcarea fișierelor pe server cu PHP, JavaScript și AJAX cu ajutorul codului oferit - în condiții de siguranță și securitate.

Rularea AJAX

Primirea unui răspuns de la server este gestionată de WaitReplySC(). În dreapta, mai jos este codul pentru două situații: verificarea existenței fișierului înainte de încărcare și procedura de încărcare propriu-zisă.

Răspuns AJAX către server

Variantele de codare pot fi diferite, important este că butonul de încărcare nu este activ până când fișierul nu a fost selectat și verificat de server.

Logica procesului de încărcare

Cod server în PHP

Serverul trebuie să verifice dacă fișierul poate fi încărcat. Obstacolele la încărcare sunt determinate de sarcina în cauză, dar este întotdeauna important să nu suprascrieți informațiile, adică să prevedeți și să blocați încărcarea fișierelor pe server în PHP în mod repetat.

Pentru a rezolva această problemă, cel mai simplu este să faceți un tabel într-o bază de date MySQL și să marcați acolo fiecare fișier încărcat pe o linie. Aici puteți stoca numele actual al fișierului, extensia acestuia, data descărcării, puteți urmări operațiunile cu fișiere etc.

Verificarea numelui de fișier pe partea serverului

Acesta este codul care verifică dacă un fișier există după numele său unic. Funcția obiectului de bază de date $oBase NewViuq() definește un nume unic pentru elementul încărcat și îl pune în corespondență cu numele real al fișierului.

Codul serverului de descărcare a fișierului

Dacă verificarea numelui a avut succes, vizitatorul face clic pe butonul de descărcare și AJAX inițiază încărcarea fișierului. Codul PHP corectează intrarea din tabelul MySQL și produce următorul rezultat:

Rezultatul descărcării unui fișier

O altă intrare a apărut în sistemul de fișiere, iar rândul din tabel pentru acest fișier are acum conținutul final. Câmpul de stare (f_status) conține caracterul "N", adică nu a fost efectuată încă nicio operațiune asupra fișierului încărcat.

Logica schimbului de date

Ubicuitatea fișierelor *docx, *docx.xlsx, *.pdf și arhivele au dus la formarea unui concept nu tocmai corect: HTML & PHP care descarcă fișiere de pe un server este un link către acestea. Acest lucru nu înseamnă neapărat că vizitatorul descarcă articolul. Adesea, programatorul doar deschide fișierul în browser pentru a vedea.

Multe sarcini implică modificarea informațiilor din astfel de fișiere. Persoana care administrează site-ul verifică un set de fișiere reale, le descarcă, le modifică și le trimite înapoi la server. Această logică generează un trafic substanțial, supraîncarcă canalele de comunicare și îngreunează atât întreținerea, cât și operarea resursei web.

Este, desigur, imposibil să se schimbe sistemul stabilit de relații de informare într-o anumită companie. În cazul în care se acordă prioritate organizării fișierelor, acestea ar trebui să fie optimizate. În cazul în care există posibilitatea de a transforma fișierele în date și de a lucra direct cu ele, opțiunea ideală ar fi să le descărcați, transformându-le într-o formă activă care să permită modificarea conținutului în elementele sale. Atunci când un fișier trebuie descărcat de pe server, acesta este convertit în starea sa curentă actualizată și trimis către consumator.

Articole pe această temă