Lapstuen Skrevet 25. desember 2007 Del Skrevet 25. desember 2007 Hei! Jeg driver å prøver ut et file uploadings script jeg fant på denne siden. Men jeg får en feilmelding når jeg kjører <?php mysql_connect("sensurert","sensurert","sensurert"); mysql_select_db("upload"); $data = addslashes(fread(fopen($form_data, "r"), filesize($form_data))); $result=MYSQL_QUERY("INSERT INTO uploads (description, data,filename,filesize,filetype) ". "VALUES ('$form_description','$data','$form_data_name','$form_data_size','$form_data_type')"); $id= mysql_insert_id(); print "<p>File ID: <b>$id</b><br>"; print "<p>File Name: <b>$form_data_name</b><br>"; print "<p>File Size: <b>$form_data_size</b><br>"; print "<p>File Type: <b>$form_data_type</b><p>"; print "To upload another file <a href=http://www.yoursite.com/yourpage.html> Click Here</a>"; ?> Jeg får da opp følgende feilmelding "Warning: fread(): supplied argument is not a valid stream resource in "sensurert" Jeg greier ikke å finne ut av hva som er feil Noen som er vilige til å hjelpe? Lenke til kommentar
Ozwald Skrevet 25. desember 2007 Del Skrevet 25. desember 2007 Har du definert $form_data? Lenke til kommentar
Lapstuen Skrevet 25. desember 2007 Forfatter Del Skrevet 25. desember 2007 Har du definert $form_data? Ja, $form_data blir definert i følgende form <form method="post" action="upload.php" enctype="multipart/form-data"> Description:<br> <input type="text" name="form_description" size="40"> <input type="hidden" name="MAX_FILE_SIZE" value="1000000"> <br>File to upload:<br> <input type="file" name="form_data" size="40"> <p><input type="submit" name="submit" value="submit"> </form> Lenke til kommentar
ZoRaC Skrevet 25. desember 2007 Del Skrevet 25. desember 2007 Se på $_FILES på php.net, står mye der om hvordan man håndterer filopplasting. Lenke til kommentar
Lapstuen Skrevet 25. desember 2007 Forfatter Del Skrevet 25. desember 2007 Se på $_FILES på php.net, står mye der om hvordan man håndterer filopplasting. Takk for tipset, men jeg kan ikke riktig skjønne hvorfor $_FILES skulle være til noen hjelp for meg. Så vidt jeg skjønner så ser det ikke ut til å være et problem å lase opp filen, men å lese den og adde den til databasen. Beklager hvis jeg har oversett noe, er ikke veldig bevandret i PHP Lenke til kommentar
Ozwald Skrevet 25. desember 2007 Del Skrevet 25. desember 2007 (endret) $_FILES brukes til å håndtere sendte filer, akkuratt som $_POST brukes til å håndtere sendt informasjon. Så du må bruke: $_FILES['form_data']; Jeg har selv aldri brukt metoden du bruker for å opplaste noe, og for meg ser den ikke ut til å kunne fungere, men for all del, kan være jeg tar feil. Edit: Ettersom jeg antar fopen ikke kan åpne filer på klientens maksin uten videre. Endret 25. desember 2007 av Ozwald Lenke til kommentar
Lapstuen Skrevet 25. desember 2007 Forfatter Del Skrevet 25. desember 2007 $_FILES brukes til å håndtere sendte filer, akkuratt som $_POST brukes til å håndtere sendt informasjon. Så du må bruke: $_FILES['form_data']; Jeg har selv aldri brukt metoden du bruker for å opplaste noe, og for meg ser den ikke ut til å kunne fungere, men for all del, kan være jeg tar feil. Edit: Ettersom jeg antar fopen ikke kan åpne filer på klientens maksin uten videre. Har prøved med $_FILES['form_data'], men kan fortsatt ikke få det til å funke. samme feilmelding som tidligere Lenke til kommentar
Merko Skrevet 25. desember 2007 Del Skrevet 25. desember 2007 $_FILES brukes til å håndtere sendte filer, akkuratt som $_POST brukes til å håndtere sendt informasjon. Så du må bruke: $_FILES['form_data']; Jeg har selv aldri brukt metoden du bruker for å opplaste noe, og for meg ser den ikke ut til å kunne fungere, men for all del, kan være jeg tar feil. Edit: Ettersom jeg antar fopen ikke kan åpne filer på klientens maksin uten videre. Har prøved med $_FILES['form_data'], men kan fortsatt ikke få det til å funke. samme feilmelding som tidligere Kanskje du kan se på denne siden ang file upload: http://www.w3schools.com/php/php_file_upload.asp dog, er ikke med mysql men mulig du finner en løsning Lenke til kommentar
grimjoey Skrevet 25. desember 2007 Del Skrevet 25. desember 2007 etter opplasting blir filen lagt i tmp katalogen på serveren. det er scriptets jobb å hente den derfra å legge den et sted man kan bruke den. eller evenuellt laste inn i en database. $_FILES['form_data']['tmp_name'] vil returnere filens bane og navn på serveren (tror jeg). vertfall det midlertidige filnavnet så bruker man move_uploaded_file() for å flytte den Lenke til kommentar
Merko Skrevet 25. desember 2007 Del Skrevet 25. desember 2007 etter opplasting blir filen lagt i tmp katalogen på serveren. det er scriptets jobb å hente den derfra å legge den et sted man kan bruke den. eller evenuellt laste inn i en database. $_FILES['form_data']['tmp_name'] vil returnere filens bane og navn på serveren (tror jeg). vertfall det midlertidige filnavnet så bruker man move_uploaded_file() for å flytte den Om du kommenterte til w3schools.com 'guiden' står det lengre nede at den laster opp til tmp, deretter flytter den til upload mappen Er eksempler.. Lenke til kommentar
grimjoey Skrevet 25. desember 2007 Del Skrevet 25. desember 2007 (endret) jeg kommenterte til første posten i denne tråden. tittet ikke på w3schools. det virker som trådstarter antar at verdien fra form_data blir automatisk lagt til en variabel $form_data. noe liknende skjer med get data dersom serveren er instillt på det, men ikke post data etter hva jeg vet. trådstarter prøver å fopen($post_data) jeg tror han kommer litt lenger dersom han gjør fopen($_FILES['form_data']['tmp_name']) og bytt ut $form_data_name med $_FILES['form_data']['filename'] Endret 25. desember 2007 av grimjoey Lenke til kommentar
Lapstuen Skrevet 25. desember 2007 Forfatter Del Skrevet 25. desember 2007 Jeg vil gjerne takke for all hjelpen dere har gitt meg, men enda er jeg ikke helt i mål. Jeg har prøvd mye av det dere foreslår men for meg ble det litt for mye info spredt over for mange poster laget av forskjellige personer. Jeg lurer derfor om noen kan ta utgangspunkt i det første scriptet jeg postet, og se om de klarer å finne ut av hva som er galt. Jeg er som sagt en nybegynner innen dette feltet og beklager om jeg har oversett noe, eller om jeg faktisk har fått løsningnen men ikke klart å finne ut av det. Lenke til kommentar
grimjoey Skrevet 25. desember 2007 Del Skrevet 25. desember 2007 hvorfor vil du skrive innholdet i filen inn i et felt i databasen? ville det ikke vært bedre å skrive /bane/../filnavn.ext i databasen sammen med info om størrelse osv, og ha filen lagret som en vanlig fil på serveren? Lenke til kommentar
Lapstuen Skrevet 26. desember 2007 Forfatter Del Skrevet 26. desember 2007 hvorfor vil du skrive innholdet i filen inn i et felt i databasen? ville det ikke vært bedre å skrive /bane/../filnavn.ext i databasen sammen med info om størrelse osv, og ha filen lagret som en vanlig fil på serveren? Nei det er et godt spørsmål xD Jeg antar det kanskje er lettere å laste opp filen til en mappe, så adde plasseringen av filen pluss id til en mysql database så man kan laste ned filen ved å adde id'en etter download.php?=5 eller noe sånt xD Har dessverre ingen peiling på hvordan dette kan gjøres, og kunne derfor trenge litt hjelp Lenke til kommentar
grimjoey Skrevet 26. desember 2007 Del Skrevet 26. desember 2007 jeg tittet på siden du hentet scriptet fra. de nevner ikke $_FILES arrayet. de nevner heller ikke sikkerhet (koden er åpen for sql injection). Er du interesert i å lære php/mysql, eller bare interessert i å få tak i et upload script som funker? Lenke til kommentar
Lapstuen Skrevet 26. desember 2007 Forfatter Del Skrevet 26. desember 2007 jeg tittet på siden du hentet scriptet fra. de nevner ikke $_FILES arrayet. de nevner heller ikke sikkerhet (koden er åpen for sql injection). Er du interesert i å lære php/mysql, eller bare interessert i å få tak i et upload script som funker? Både og Akkurat nå trenger jeg bare et fungerende upload script, men ønsker også å lære mer PHP Lenke til kommentar
grimjoey Skrevet 26. desember 2007 Del Skrevet 26. desember 2007 (endret) <html> <body> <?php $dblink = mysql_connect('localhost', 'root', '') or die(mysql_error()); mysql_select_db('upload') or die(mysql_error()); function q($msg, $dblink) { if (get_magic_quotes_gpc()) $msg = stripslashes($msg); $msg = "'".mysql_real_escape_string($msg, $dblink)."'"; return $msg; } if(isset($_POST['submit_file'])) { $filesavelocation = 'files'; // plassering av filer // hindre sql injection foreach($_POST as $k => $v) { if (!is_numeric($v)) $_POST[$k] = q($v, $dblink); else $_POST[$k] = (int)$v; } $localfilename = $_FILES['userfile']['tmp_name']; $filename = $_FILES['userfile']['name']; $filedescription = $_POST['description']; $filetypearray = explode('.', $filename); $filetype = $filetypearray[count($filetypearray) - 1]; if(!move_uploaded_file($localfilename,$filesavelocation.'/'.$filename)) die('Fil ikke flyttet '.$localfilename.' '.$filesavelocation.' '.$filename); $filesize = filesize($filesavelocation.'/'.$filename); mysql_query('INSERT INTO uploads(description, filename, filesize, filetype) VALUES('.$filedescription.', \''.$filesavelocation.'/'.$filename.'\', '.$filesize.', \''.$filetype.'\');') or die(mysql_error()); $id= mysql_insert_id(); echo '<p>File ID: <b>'.$id.'</b><br />'; echo 'File Name: <b>'.$filename.'</b><br />'; echo 'File Size: <b>'.$filesize.'</b><br />'; echo 'File Type: <b>'.$filetype.'</b><br />'; echo 'File Description: <b>'.$filedescription.'</b><br />'; } ?> <form enctype="multipart/form-data" action="" method="POST"> <table> <input type="hidden" name="MAX_FILE_SIZE" value="1500000" /> <tr> <td> <label for="desc">Description:</label> </td> <td> <input type="text" name="description" id="desc" size="40" /> </td> </tr> <tr> <td> <label for="file">File:</label> </td> <td> <input type="file" name="userfile" id="file" /> </td> </tr> <tr> <td colspan="2"> <input type="submit" name="submit_file" value="Upload" /> </td> </tr> </table> </form> </body> </html> endret Endret 26. desember 2007 av grimjoey Lenke til kommentar
Lapstuen Skrevet 26. desember 2007 Forfatter Del Skrevet 26. desember 2007 noe slikt: <html> <body> <?php function q($msg) { if (get_magic_quotes_gpc()) $msg = stripslashes($msg); $msg = "'".mysql_real_escape_string($msg)."'"; return $msg; } if(isset($_POST['submit_file'])) { $filesavelocation = 'files'; // plassering av filer // hindre sql injection foreach($_POST as $k => $v) { if (!is_numeric($v)) $_POST[$k] = q($v); else $_POST[$k] = (int)$v; } $localfilename = $_FILES['userfile']['tmp_name']; $filename = $_FILES['userfile']['name']; $filedescription = $_POST['description']; $filetypearray = explode('.', $filename); $filetype = $filetypearray[count($filetypearray) - 1]; if(!move_uploaded_file($localfilename,$filesavelocation.'/'.$filename)) die('Fil ikke flyttet '.$localfilename.' '.$filesavelocation.' '.$filename); $filesize = filesize($filesavelocation.'/'.$filename); mysql_query('INSERT INTO uploads(description, filename, filesize, filetype) VALUES('.$filedescription.', '.$filesavelocation.'/'.$filename.', '.$filesize.', '.$filetype.');'); $id= mysql_insert_id(); echo '<p>File ID: <b>'.$id.'</b><br />'; echo 'File Name: <b>'.$filename.'</b><br />'; echo 'File Size: <b>'.$filesize.'</b><br />'; echo 'File Type: <b>'.$filetype.'</b><br />'; echo 'File Description: <b>'.$filedescription.'</b><br />'; } ?> <form enctype="multipart/form-data" action="" method="POST"> <table> <input type="hidden" name="MAX_FILE_SIZE" value="150000" /> <tr> <td> <label for="desc">Description:</label> </td> <td> <input type="text" name="description" id="desc" size="40" /> </td> </tr> <tr> <td> <label for="file">File:</label> </td> <td> <input type="file" name="userfile" id="file" /> </td> </tr> <tr> <td colspan="2"> <input type="submit" name="submit_file" value="Upload" /> </td> </tr> </table> </form> </body> </html> husk å lage tabellen til databasen først. og det kan hende du får problemer med rettigheter i filsystemet. den tid den sorg Tusen hjertelig takk! Jeg skal prøve det ut i morgen Lenke til kommentar
grimjoey Skrevet 26. desember 2007 Del Skrevet 26. desember 2007 og du må legge til databasetilkoblingen i starten etter <?php Lenke til kommentar
Lapstuen Skrevet 26. desember 2007 Forfatter Del Skrevet 26. desember 2007 og du må legge til databasetilkoblingen i starten etter <?php Ja jeg så at det manglet når jeg gikk igjennom koden Jeg har et lite problem med scriptet, av en eller annen rar grunn så blir ingen info tilføyd databasen. Jeg har lagt til databasetilkoblings settings, og jeg får heller ingen feilmelding. Kort sagt så er det hele litt rart. Noen som kan se hvor det går galt? Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå