Avatar billede hansaarhus Nybegynder
03. august 2003 - 12:01 Der er 9 kommentarer og
1 løsning

Upload fra PC til MySql

Jeg er ved at lave et system i PHP, hvor i der indgår adressekartotek med tilhørende billeder. Det er meningen at jeg vil have billederne ind i en MySQL-database. Jeg har fundet noget kode, som ser fornuftigt ud men får allerede fejl ved fopen. Jeg har læst andre eksempler i eksperten om samme problem, men kan se at det er helt samme problem.

Jeg forsøger blot at hente winlogo.gif. Der kommer allerede fejl ved fopen:

Warning: fopen() [function.fopen]: Unable to access C:\\WINDOWS\\Winlogo.gif in /home/web/web2734/test_imagedb.php on line 20

Warning: fopen(C:\\WINDOWS\\Winlogo.gif) [function.fopen]: failed to create stream: No such file or directory in /home/web/web2734/test_imagedb.php on line 20

Warning: fopen() [function.fopen]: Unable to access C:\\WINDOWS\\Winlogo.gif in /home/web/web2734/test_imagedb.php on line 32

Jeg har forsøgt at hante data med $_POST istedet for med $_REQUEST. Er der noget der ved hvad $_REQUEST betyder?

Her er koden:

//CREATE TABLE tblimage (
//  imgid int(3) unsigned NOT NULL auto_increment,
//  imgtype varchar(16) NOT NULL default '',
//  imgdata mediumblob,
//  PRIMARY KEY  (imgid)
//) TYPE=MyISAM;

<body>
<? 
if (!isset($_REQUEST["submit"])) { 
?> 
<form method="POST" action="<?= $_SERVER["PHP_SELF"] ?>" enctype="application/x-www-form-
urlencoded">
<table>
<tr><td>Type</td><td><select name="imgtype"><option value="image/gif">GIF</option><option
value="image/jpeg">JPEG</option></select></td></tr>
<tr><td>File</td><td><input type="file" name="imgfile"></td></tr>
<tr><td></td><td><input type="submit" name="submit" value="upload"><input type="reset"></td></tr>
</table>
</form>
<? 
//-- save image to db --
} else {
  /*
  the code below is a suggestion from California Strong...
  */
  $hndl=fopen($_REQUEST["imgfile"],"r");
  $isize=sizeof($_REQUEST["imgfile"]);

  //$imgdata="";
  //while(!feof($hndl)){
  //  $imgdata.=fread($hndl,$isize);
  //};
   
  /*
  my code was...
  */
 
  $hndl=fopen($_REQUEST["imgfile"],"r");
  $imgdata=fread($hndl,filesize($_REQUEST["imgfile"]));
 
  $imgdata=addslashes($imgdata);

  $dbconn = @mysql_connect($dbserver,$dbuser,$dbpass) or exit("SERVER Unavailable"); 
  @mysql_select_db($dbname,$dbconn) or exit("DB Unavailable"); 

  $sql = "INSERT INTO tblimage VALUES(NULL,'". $_REQUEST["imgtype"] ."','". $imgdata ."')"; 

  @mysql_query($sql,$dbconn) or exit("QUERY FAILED!"); 

  mysql_close($dbconn); 

  fclose($hndl); 

}; 
?> 
</body>
------
Avatar billede TRoXa Novice
03. august 2003 - 12:03 #1
Du kan prøve at skifte $_REQUEST ud med $_POST
Avatar billede hansaarhus Nybegynder
03. august 2003 - 12:05 #2
Det ar jeg forsøgt. Det giver samme resultat.
Avatar billede whatever Nybegynder
03. august 2003 - 12:08 #3
Jeg tvivler på, at fopen kan få love til at åbne en fil der ligger uden for home-dir'et.

Prøv at uploade filen først, og derefter åbne dem med fopen.
Avatar billede hansaarhus Nybegynder
03. august 2003 - 12:18 #4
Hvordan oploader jeg til home-dir'et? Det burde sikker være simpelt, men jeg ved desværre ikke hvordan man gør det!
Avatar billede erikjacobsen Ekspert
03. august 2003 - 12:23 #5
$hndl=fopen($_REQUEST["imgfile_name"],"r");
Avatar billede hansaarhus Nybegynder
03. august 2003 - 12:27 #6
men så er det jo nettop at jeg får fejlmeddelelsen:

Warning: fopen() [function.fopen]: Unable to access C:\\WINDOWS\\Winlogo.gif in /home/web/web2734/test_imagedb.php on line 20
Avatar billede erikjacobsen Ekspert
03. august 2003 - 12:59 #7
$uploadfile = $_FILES['imgfile']['tmp_name'];
$hndl=fopen($uploadfile,"r");
Avatar billede hansaarhus Nybegynder
03. august 2003 - 14:00 #8
Det lykkedes med hint fra erikjacobsen.
Koden blev:
  $test = $_FILES["imgfile"];
  $imgdata=addslashes(fread(fopen($test['tmp_name'],"r"),$test['size']));
Nu kan $imdata indsattes i MySQL i BLOB-type.
Hvordan giver jeg point.
Avatar billede hansaarhus Nybegynder
09. august 2003 - 09:51 #9
Jeg vil give erikjacobsen point. Hvordan gør jeg det
Avatar billede erikjacobsen Ekspert
09. august 2003 - 10:13 #10
Så skulle jeg have lagt et svar - det gjorde jeg ikke. Skidt med det, jeg har point nok.
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester