`` `php
php
// Database -legitimationsoplysninger
$ sername ="localhost";
$ brugernavn ="brugernavn";
$ adgangskode ="adgangskode";
$ dbname ="myDatabase";
// Opret forbindelse
$ conn =ny MySQLI ($ servernavn, $ brugernavn, $ adgangskode, $ dbname);
// Kontroller forbindelse
if ($ conn-> connect_error) {
Die ("Forbindelse mislykkedes:". $ conn-> connect_error);
}
// Fil uploaddetaljer
$ mål_dir ="uploads/";
$ mål_file =$ mål_dir. basename ($ _ filer ["filetoUpload"] ["navn"]);
$ uploadok =1;
$ ImageFiletype =StrTolower (PathInfo ($ Target_File, PathInfo_extension));
// Kontroller, om billedfil er et faktisk billede eller et falskt billede
if (isset ($ _ post ["send"])) {
$ check =getImagesize ($ _ filer ["filetoUpload"] ["tmp_name"]);
if ($ check! ==falsk) {
Echo "File er et billede -". $ check ["mime"]. ".";
$ uploadok =1;
} andet {
Echo "-fil er ikke et billede.";
$ uploadok =0;
}
}
// Kontroller, om der allerede findes fil
if (file_exists ($ target_file)) {
ekko "undskyld, fil findes allerede.";
$ uploadok =0;
}
// Kontroller filstørrelse
if ($ _files ["FiletoUboad"] ["Størrelse"]> 500000) {
ekko "undskyld, din fil er for stor.";
$ uploadok =0;
}
// Tillad visse filformater
if ($ ImageFiletype! ="jpg" &&$ imageFiletype! ="png" &&$ imageFiletype! ="jpeg"
&&$ imageFiletype! ="gif") {
Echo "Beklager, kun JPG, JPEG, PNG &GIF -filer er tilladt.";
$ uploadok =0;
}
// Kontroller, om $ uploadok er indstillet til 0 med en fejl
if ($ uploadok ==0) {
ekko "undskyld, din fil blev ikke uploadet.";
// Hvis alt er i orden, så prøv at uploade fil
} andet {
if (move_uploaded_file ($ _ filer ["filetoUpload"] ["tmp_name"], $ target_file)) {
ekko "filen". basename ($ _files ["filetoUpload"] ["Navn"]). "er blevet uploadet.";
// Indsæt filoplysninger i databasen
$ filnavn =basename ($ _ filer ["filetoUpload"] ["navn"]);
$ file_path =$ target_file;
$ sql ="Indsæt i filer (filnavn, file_path) værdier ('$ filnavn', '$ file_path')";
if ($ conn-> forespørgsel ($ sql) ===sand) {
Echo "New Record oprettet med succes";
} andet {
Echo "Fejl:". $ SQL. "
". $ Conn-> Fejl;
}
} andet {
Echo "Beklager, der var en fejl, der uploadede din fil.";
}
}
$ conn-> close ();
?>
`` `
Forklaring:
1. Databaseopsætning:
- Opret en forbindelse til din MySQL -database ved hjælp af `MySQLI` -udvidelsen.
- Udskift pladsholdere som 'Brugernavn', 'Adgangskode' og 'MyDatabase' med dine faktiske database -legitimationsoplysninger.
2. Fil upload håndtering:
- Brug `$ _files` Superglobal Array til at få adgang til oplysninger om den uploadede fil.
- Opret et målkatalog (`$ Target_dir`), hvor filen gemmes.
- Udfør grundlæggende validering:
- Kontroller, om den uploadede fil er et faktisk billede (ved hjælp af `getImagesize`).
- Kontroller, om filen allerede findes i målmappen.
- Kontroller, om filstørrelsen er inden for tilladte grænser.
- Tillad kun visse filformater (f.eks. JPG, PNG, GIF).
3. Filopbevaring:
- Hvis valideringen passerer, skal du bruge `MOVE_UPLOADED_FILE` til at flytte den midlertidige uploadede fil til målmappen.
4. Databaseindsættelse:
- Forbered en SQL -forespørgsel efter at have gemt filen med succes for at indsætte en SQL -forespørgsel for at indsætte filoplysningerne i din database.
- Dette inkluderer typisk filnavnet og stien til filen.
- Brug metoden `$ Conn-> forespørgsler til at udføre SQL-forespørgslen.
Vigtige noter:
- sikkerhed: Valider altid brugerinput og fil uploads for at forhindre sikkerhedssårbarheder som XSS -angreb eller filinjektion.
- Databasetabel: Sørg for, at du har en passende databasetabel til at gemme filoplysninger (f.eks. 'Files' tabel med kolonner som 'Filnavn', 'File_Path', 'File_Size' osv.).
- Fejlhåndtering: Håndter potentielle fejl under upload af filer og indsættelse af database. Vis passende meddelelser til brugeren.
- filstørrelsesgrænser: Overvej at indstille passende filstørrelsesgrænser for at forhindre overbelastning af server.
- Filtyper: Du kan ændre de tilladte filtyper baseret på din applikations krav.
- Datalanitisering: Renser filnavnet og andre data, før du gemmer det i databasen for at forhindre SQL -injektionsangreb.
- store filer: For at håndtere store filer skal du overveje at bruge teknikker som chunking eller streaming uploads.
Husk at tilpasse dette kodestykket til dit specifikke databaseskema og fil upload -krav.