[PHP] probleempje met <input type="file" name="source">

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ok, ik heb een probleem met mijn ftp-upload.

Ik zit er al een halve dag achter te zoeken, ofwel zoek ik op de verkeerde plaatsen of met de verkeerde keywords. Het erge is dat ik er zeker van ben dat het een stom probleem is.

nl.
Ik wil een bestand uploaden, aangezien ik moet kunnen kiezen gebruik ik een form met een input=file.
Hierdoor kan ik mooi kiezen, en wanneer ik dat form opstuur. En de variable uitlees krijg ik dan ook de bestandsnaam te zien van het gekozen bestand.

Als ik dit nu door stuur naar mijn upload functie, zegt hij dat de locatie niet bestaat. Logisch want die is niet meegegeven. (als ik de soruce file hardcodeer bijv c:/test.txt werkt het wel)

Om een lang verhaal kort te maken, hoe kan ik de hele locatie meesturen en niet alleen de naam van het bestand

het eigelijke form

code:
1
2
3
4
 <form method=\"post\" action=\"{$type}.php?id={$id}&action=upload \" enctype=\"multipart/form-data\">
   <input type=\"file\" name=\"source_file\">       
   <input type=\"submit\" value=\"Uploaden\">
</form>


de handler

code:
1
2
3
4
if ($_GET['action']== "upload" )
{        $destination_file = "aff-".$_GET['id'] ;
        upload($_POST['source_file'],$destination_file);;
}

upload functie

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
function upload($source_file,$destination_file)
{
   
         $ftp_user_name = "****";
         $ftp_user_pass = "****";
   
  

    // set up basic connection
$conn_id = ftp_connect("****");

// login with username and password
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);

// check connection
if ((!$conn_id) || (!$login_result)) {
       echo "FTP connection has failed!";
       exit;
   } 

// upload the file      
$upload = ftp_put($conn_id, $destination_file, $source_file, FTP_BINARY);

// check upload status
if (!$upload) {
       echo "FTP upload has failed!";
   } else {
       echo "Uploaded $source_file to $ftp_server as $destination_file";
   }

// close the FTP stream
ftp_close($conn_id); 
}



<?php print_r ($_FILES); ?> ==

Array ( [source_file] => Array ( [name] => 1.txt [type] => text/plain [tmp_name] => C:\WINDOWS\TEMP\php23.tmp [error] => 0 [size] => 26 ) ) FTP upload has failed!

[ Voor 102% gewijzigd door Verwijderd op 02-11-2005 16:08 ]


Acties:
  • 0 Henk 'm!

  • momania
  • Registratie: Mei 2000
  • Laatst online: 15:37

momania

iPhone 30! Bam!

Je moet ook het bestand zelf doorgeven en niet alleen de naam :)
Ik denk tenminste dat je dat doet, maar aangezien je geen voorbeeld code geeft weet ik dat niet zeker.

Neem je whisky mee, is het te weinig... *zucht*


Acties:
  • 0 Henk 'm!

  • BasieP
  • Registratie: Oktober 2000
  • Laatst online: 22-07-2024
ten eerste: wtf heeft een form te maken met ftp upload?

ten tweede waar is je code? je doet vast iets fout, maar mijn glazen bol is kapot

ten derde: op het grote wijde web staan tal van voorbeelden van upload scripts.. heb je daar al naar gezocht?

This message was sent on 100% recyclable electrons.


Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 18-09 16:28

Bosmonster

*zucht*

PHP:
1
2
3
4
5
6
7
8
9
10
11
<html>
<body>
<pre>
<?php print_r ($_FILES); ?>
</pre>
<form method="post" action="" enctype="multipart/form-data">
<input type="file" name="upload"><br>
<input type="submit" value="opslaan">
</form>
</body>
</html>


Begin daar eens mee..

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
BasieP schreef op woensdag 02 november 2005 @ 15:45:
ten eerste: wtf heeft een form te maken met ftp upload?

ten tweede waar is je code? je doet vast iets fout, maar mijn glazen bol is kapot

ten derde: op het grote wijde web staan tal van voorbeelden van upload scripts.. heb je daar al naar gezocht?
1. als de input de maplocatie niet doorgeeft, deupload failed
2. done
3. natuurlijk.

Acties:
  • 0 Henk 'm!

Verwijderd

Verwijderd schreef op woensdag 02 november 2005 @ 16:03:
[...]


1. als de input de maplocatie niet doorgeeft, deupload failed
2. done
3. natuurlijk.
Volgens mij begrijp je het principe van files uploaden niet helemaal, NOFI. Wat gebeurd er als iemand gebruik maakt van jouw uploadscript? Hij of zij selecteerd een bestand ongeacht waar dit staat, en vervolgens wordt op de knop verzenden gedrukt. Vervolgens wordt het bestand verzonden naar jouw script (eerst wordt het verplaatst naar een tijdelijke map, een temporary directory maar dat doet niet ter zake - alhoewel, dát is eigenlijk het bestand waar jíj mee gaat werken) en dan kun je er mee doen wat je wilt. Je ontvangt namelijk het bestand en het maakt niets uit waar dit vandaan komt.

Het enigste wat in jouw geval wél interessant is, is wáár je het neer gaat zetten. Maar dat mag je zelf weten :) Succes!

[ Voor 5% gewijzigd door Verwijderd op 02-11-2005 16:15 ]


Acties:
  • 0 Henk 'm!

  • BasieP
  • Registratie: Oktober 2000
  • Laatst online: 22-07-2024
bart1981: ftp is een file transfer protocol. uploaden via php gebeurd via het http protocol, vandaar mijn vraag. maar dat terzijde

ik zie nu in je code dat je de geuploade file direct op een ftp server wilt zetten. dat stond niet in je verhaal, maar verklaard wel het ftp gebeuren :P
nu weet ik niet of dit direct kan, dus vandaar dat ik zeg:
probeer het eens met standaard debugge.
upload de file eerst normaal.
check of ie er staat etc.
upload dan (in een apparte test) even een file via php op naar een ftp.
als dit beide werkt kan je het makkelijk combineren.

ik denk dat het probleem zit in het feit dat de data die jij via je $_Files binnenkrijgt niet helemaal compatible is, met het ftpput commando

This message was sent on 100% recyclable electrons.


Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 18-09 16:28

Bosmonster

*zucht*

Verwijderd schreef op woensdag 02 november 2005 @ 15:37:


<?php print_r ($_FILES); ?> ==

Array ( [source_file] => Array ( [name] => 1.txt [type] => text/plain [tmp_name] => C:\WINDOWS\TEMP\php23.tmp [error] => 0 [size] => 26 ) ) FTP upload has failed!
Ok eindelijk interessante info.

Je geeft $_POST['source_file'] mee met je script.. maar das maar een naampje. Wat je wel wilt doen is de tmp_name van $_FILES meegeven. Dat is namelijk de naam van het tijdelijke bestand dat geupload is (en waar daadwerkelijk data achter zit).

[ Voor 15% gewijzigd door Bosmonster op 02-11-2005 16:21 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
BasieP schreef op woensdag 02 november 2005 @ 16:15:
bart1981: ftp is een file transfer protocol. uploaden via php gebeurd via het http protocol, vandaar mijn vraag. maar dat terzijde

ik zie nu in je code dat je de geuploade file direct op een ftp server wilt zetten. dat stond niet in je verhaal, maar verklaard wel het ftp gebeuren :P
nu weet ik niet of dit direct kan, dus vandaar dat ik zeg:
probeer het eens met standaard debugge.
upload de file eerst normaal.
check of ie er staat etc.
upload dan (in een apparte test) even een file via php op naar een ftp.
als dit beide werkt kan je het makkelijk combineren.

ik denk dat het probleem zit in het feit dat de data die jij via je $_Files binnenkrijgt niet helemaal compatible is, met het ftpput commando
Het upload gebeuren op zich werkt. Dat werkt al van de eerste keer.

Als ik, wat ik wil uploaden, hardcode in de variable source_file

code:
1
$source_file = "c:\test.txt"


en dan op upload klik, staat die file op de server (hernoemt well is waar maar hij staat er)
dus het upload gedeelte werkt zoals het hoort.


Als ik het zelfde doe met een<input=file>, stuurt hij in de variabele source_file enkel de naam door, en niet het gehele pad. Ik selecteer een bestand via de input=file. en dan op upload klik, stuurt hij die niet door, omdat hij geen heel pad heeft gekregen.

dus ik vraag me af hoe kan ik dat gehele pad kan doorsturen.

Acties:
  • 0 Henk 'm!

  • BasieP
  • Registratie: Oktober 2000
  • Laatst online: 22-07-2024
bart: je geeft antwoord op je eigen vraag.

je zegt dat het fout gaat als je de $source_file dynamisch maakt.

met de info die bosmonster net heeft gepost moet je er nu wel uit kunnen komen denk ik

This message was sent on 100% recyclable electrons.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb het dan maar "opgelost" met een reguliere http upload. en niet via ftp.
Pagina: 1