24. april 2004 - 12:54Der er
24 kommentarer og 1 løsning
PLEASE, en forklaring på fil-behandling
Jeg er i en stor nød.. Jeg har brug for at vide hvordan man (Med PHP) behander filer.. Hvordan man ser navnet på en fil? Hvordan man ser hvilken filtypen? Hvordan man ser størrelsen på en fil?
(Evt. et lille script der siger 'tillad kun filer der fylder under 200 kb)
Hvordan man uploader filer til LONGBLOB - (Jeg kan ikke få filen der op, kun stien)
Den der kan svare på dette bliver tildelt 80 point, og en meget STOR TAK fra min side.. HVH Rasmus den søgende..
Jaaee.. det var en tynd forklaring.. Men måske var mit spørgsmål også dårligt formuleret! Det jeg gerne vil vide er hvordan man uploader en fil op i en MySQL database, og det jeg skal bruge de andre oplysninger er: Filtype: Godkend kun JPG/JPEG/GIF/BMP Filstørrelse: Tillad max 200 kb Filnavn: Til at se forskel på fillerne
Så hvis du kan kode et script der uploader en fil op i en mysqldatabase, tjekker om det er JPG/JPEG/GIF/BMP og tjekker om den fylder over 200kb, så er pointene dine! :D
.. Hvis du gider tage min opvask, så skal jeg nok :-)
Kig på http://www.php.net/manual/en/features.file-upload.php Der kan du se at $_FILES indeholder alle de oplysninger du skal bruge (navn,størrelse,imagetype).. Så er det bare om at bruge get_file_contents() på filen og ligge det op i databasen.
Men stadig, hvorfor vil du lægge binære data i databasen? Mange vil gerne smide det i databasen, men jeg har stadig ikke fundet ud af hvorfor..
Jeg har et script der kan hvad du vil, borset fra det med databasen - og jeg vil da genre udvide scriptet med database-support, hvis der er en god grund. (jeg tvivler :) )
Det er databasen er en nem, hurtigt og smart måde at gøre det på. Det er langt nemmere at overskue det hele, at det bare ligge i en celle.. Så hvis der for eksemple er to der begge oplaoder et billede "mig.jpg" så vil det ene overskrive det andet, med mindre det ligger i en database...
Og det er totalt uoverskueligt med det der link du skrev.. Undskyld jeg siger det! :) Men hvis nu du kan lave et script som jeg beskrivede tideligere, så ville jeg blive glad ;)
Jo, men nu smed du jo ikke dette spørgsmål i "opgaver", så jeg går ud fra at du gerne vil have hjælp.
nem: Tja, det er måske halvrigtigt. Når man sletter en række i databasen er filen også væk. Men det er så en instruktions man sparer hurtigt: Nej. Alt fylde databasen op med en masse "junk" den ikke kan bruge (søge, opdatere eller lign) er slet ikke hurtigt. Tabellen vil bliver temmelig stor, og det vil have indflydelse på alle søgninger i den tabel. (om det bliver et reelt problem afhænger jo af mange faktorer) smart: Tja, det syntes jeg nu ikke. :)
Upload filen til et bibliotek, rename dem til id'et på den række du smider informationerne ind i. (id=1 så er filnavnet 1 eller 1.jpg). Det "rigtige" filnavn (fx. mig.jpg) gemmer du også bare i tabellen, hvis du har behov for det.
Tak for hjælpen dennismp :D Det skal du have mange tak for, men du skal lige huske at angive et spørgsmål som er et "Svar" ellers kan du ikke få point! :P Så sad jeg lige og legede med at få billede ud af databasen igen, det var ikke så svært:
<? require("db_ind.php"); $sql = "SELECT * FROM image WHERE image_id=$_GET[id]"; $result = mysql_query($sql); $myrow = mysql_fetch_array($result);
$_FILES['userfile']['type'] .. den skal være 'image/etelelrandet' for at det er et billede (man kan godt snyde, men har ikke hørt om det).. typerne du er interesseret i er nok
Har givet dig point, men håber du gider svare alligevel.. Funktionen "$_FILES['userfile']['type']" virker ikke hvis man oploader til en MySQL databse :S ??
Og noget andet der ikke har noget med PHP at gøre (hehe) : Hvordan er det nu med hvis man bruger en tekst som "Submit" og "Slet" knap.. Er det ikke noget med at linket skal hedde "java script:submit;'formnavn'();" eller sådan noget.. Og hvordan med slet?? :S
$_FILES[hvadditfeltnuhedderiformen]['type'] bliver altid sat når du uploader - dette sker får dit script overtager kontrollen. Så om det bliver slettet, lagt i mysql eller hvad man kan finde på er ligemeget..
Et sted i din kode bruger du vel $_FILES ?
vedr javascript. Aner det ikke. Jeg bruger kun javascript hvis der ikke er andre muligheder :)
Hov undskyld, jeg tog fejl... $_FILES bliver faktisk brugt en hel del :P Der er godt nok en fuktion der tager de filer fra der ikke er billede-filer, og hvis man prøver at uploade en anden fil bliver skærmen bare hvid! Hvordan får man det til at melde fejl? Koden er således:
<?
// database connection $conn = mysql_connect("localhost", "***", "***") OR DIE (mysql_error()); @mysql_select_db ("***", $conn) OR DIE (mysql_error());
// Do this process if user has browse the // file and click the submit button if ($_FILES) { $image_types = Array ("image/bmp", "image/jpeg", "image/pjpeg", "image/gif", "image/x-png"); if (is_uploaded_file ($_FILES["userfile"]["tmp_name"])) { $userfile = addslashes (fread (fopen ($_FILES["userfile"]["tmp_name"], "r"), filesize ($_FILES["userfile"]["tmp_name"]))); $file_name = $_FILES["userfile"]["name"]; $file_size = $_FILES["userfile"]["size"]; $file_type = $_FILES["userfile"]["type"];
Som dennismp sagde tidligere, er det en MEGET dårlig ide at uploade billeder og filer til din database. Tro mig jeg har erfaring med det, det bliver utroligt langsomt. Uplad navnet til databasen og filen/billedet til en mappe, det er ikke mere besvärligt.
// database connection $conn = mysql_connect("localhost", "***", "***") OR DIE (mysql_error()); @mysql_select_db ("***", $conn) OR DIE (mysql_error());
// Do this process if user has browse the // file and click the submit button if ($_FILES) { $image_types = Array ("image/bmp", "image/jpeg", "image/pjpeg", "image/gif", "image/x-png"); if (is_uploaded_file ($_FILES["userfile"]["tmp_name"])) { $userfile = addslashes (fread (fopen ($_FILES["userfile"]["tmp_name"], "r"), filesize ($_FILES["userfile"]["tmp_name"]))); $file_name = $_FILES["userfile"]["name"]; $file_size = $_FILES["userfile"]["size"]; $file_type = $_FILES["userfile"]["type"];
Okay michael_strim.. Jeg tror på dig, men hvad nu hvis jeg gerne vil have det sådan at hver bruger kan oploade ti billede? Så går det jo ikke at man bare omdøber billedets navn til brugers id. Men hvis du har et script der oploader billedet til serveren og de andre informationer til en database, ville jeg da gerne vi interresseret :D
Tak for linket, men jeg kan ikke lige få det til at funkere. Det er noget med at man skal give en mappe tilladelse til at skrive (777) og det kan jeg ikke få den til... Og så noget med "Fatal error: Call to undefined function: imageresize()" - Men bortset fra det, tak :D
Og jeg har gået og tænkt over det med billeder i en database. Det er måske en dårlig idé..
Det kan jeg godt forstå at du ikke kan (finde funktionen resize), den er der ikke. Det er til at resize billeder så du får samme störrelse på alle billederne. Her kommer linket til den: http://www.xyborx.dk/phpbb/viewtopic.php?t=4
Du kan jo sagents smide filnavnet, tidspunkt og hvilken bruger der er uploadet det i en database. Og så bare bruge det id på den række der beskriver filen. Så er du sikker på at det er unikt.
Hvad med hvis man laver det sådan; at en bruger uploader et billede, informationer kommer i en database og filen bliver døbt "1.jpg", "1.gif" hvis det er gif osv. Og så bliver alle billederne smidt i sammen mappe. Det næste billeder der bliver uploadet kommer til at hedde "2.jpg".. Billederne er let at finde, fordi navnet (Fx 495.jpg) ligger som data i databasen.
Nogle der ved hvordan man kan lave sådan en funktion? En der kigger på fil-typen, så hvis det er jpg så skal den renames til "1.jpg" og hvis der er et billede der hedder det i forvejen så "2.jpg" ?
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.