`` `php
php
// databasuppgifter
$ servername ="localhost";
$ användarnamn ="användarnamn";
$ lösenord ="lösenord";
$ dbname ="MyDatabase";
// Skapa anslutning
$ conn =new mysqli ($ servername, $ användarnamn, $ lösenord, $ dbname);
// Kontrollera anslutningen
if ($ conn-> connect_error) {
Die ("Anslutning misslyckades:". $ conn-> connect_error);
}
// File Ladda upp detaljer
$ target_dir ="uppladdningar/";
$ Target_file =$ Target_dir. baseName ($ _ filer ["fileToUpload"] ["namn"]);
$ uppladdning =1;
$ ImageFileType =StrToLower (PathInfo ($ Target_File, PathInfo_Extension));
// Kontrollera om bildfilen är en faktisk bild eller falsk bild
if (isset ($ _ post ["skicka"])) {
$ check =getImageSize ($ _ filer ["fileToUpload"] ["tmp_name"]);
if ($ check! ==falsk) {
Echo "-fil är en bild -". $ check ["mime"]. ".";
$ uppladdning =1;
} annat {
Echo "-fil är inte en bild.";
$ uppladdning =0;
}
}
// Kontrollera om filen redan finns
if (file_exists ($ target_file)) {
Echo "Ledsen, fil finns redan.";
$ uppladdning =0;
}
// Kontrollera filstorleken
if ($ _files ["fileToUpload"] ["storlek"]> 500000) {
Echo "Tyvärr, din fil är för stor.";
$ uppladdning =0;
}
// Tillåt vissa filformat
if ($ ImageFileType! ="JPG" &&$ ImageFileType! ="PNG" &&$ ImageFileType! ="JPEG"
&&$ ImageFileType! ="Gif") {
Echo "Tyvärr, bara JPG, JPEG, PNG &GIF -filer är tillåtna.";
$ uppladdning =0;
}
// Kontrollera om $ Uploadok är inställd på 0 av ett fel
if ($ uploadok ==0) {
echo "Tyvärr, din fil laddades inte upp.";
// Om allt är ok, försök att ladda upp filen
} annat {
if (move_uploaded_file ($ _ filer ["fileToUpload"] ["tmp_name"], $ target_file)) {
echo "filen". BASENAME ($ _FILES ["filetoUpload"] ["namn"]). "har laddats upp.";
// Infoga filinformation i databasen
$ filnamn =baseName ($ _ filer ["fileToUpload"] ["namn"]);
$ file_path =$ Target_file;
$ sql ="infoga i filer (filnamn, fil_path) värden ('$ filnamn', '$ file_path')";
if ($ conn-> query ($ sql) ===true) {
Echo "Ny skiva skapad framgångsrikt";
} annat {
echo "fel:". $ sql. "
". $ conn-> fel;
}
} annat {
Echo "Tyvärr, det fanns ett fel som laddade upp din fil.";
}
}
$ conn-> close ();
?>
`` `
Förklaring:
1. databasinställning:
- Upprätta en anslutning till din MySQL -databas med hjälp av förlängningen "MySQLI".
- Byt ut platshållare som "användarnamn", "lösenord" och "myDatabase" med dina faktiska databasuppgifter.
2. File Ladda upp hantering:
- Använd SuperGlobal -arrayen `$ _files 'för att få åtkomst till information om den uppladdade filen.
- Ställ in en målkatalog (`$ Target_dir`) där filen kommer att sparas.
- Utför grundläggande validering:
- Kontrollera om den uppladdade filen är en faktisk bild (med `getImagageSize ').
- Kontrollera om filen redan finns i målkatalogen.
- Kontrollera om filstorleken är inom tillåtna gränser.
- Tillåt endast vissa filformat (t.ex. JPG, PNG, GIF).
3. fillagring:
- Om valideringen passerar, använd `move_uploaded_file` för att flytta den tillfälliga uppladdade filen till målkatalogen.
4. databasinsättning:
- För att ha lyckats lagra filen, förbered en SQL -fråga för att infoga filinformationen i din databas.
- Detta inkluderar vanligtvis filnamnet och sökvägen till filen.
- Använd metoden "$ conn-> query" för att köra SQL-frågan.
Viktiga anteckningar:
- Säkerhet: Validera alltid användarinmatnings- och filuppladdningar för att förhindra säkerhetssårbarheter som XSS -attacker eller filinjektion.
- Databastabell: Se till att du har en lämplig databastabell för att lagra filinformation (t.ex. "filer" -tabell med kolumner som `filnamn ',` file_path`, `file_size', etc.).
- Felhantering: Hantera potentiella fel under filuppladdning och insättning av databaser. Visa lämpliga meddelanden till användaren.
- Filstorleksgränser: Överväg att ställa in lämpliga filstorleksgränser för att förhindra överbelastning av servern.
- filtyper: Du kan ändra de tillåtna filtyperna baserat på applikationens krav.
- Data Sanitisering: Sanera filnamnet och andra data innan du lagrar den i databasen för att förhindra SQL -injektionsattacker.
- stora filer: För att hantera stora filer, överväg att använda tekniker som chunking eller streaming uppladdningar.
Kom ihåg att anpassa detta kodavsnitt till ditt specifika databasschema och krav på uppladdning av uppladdning.