Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]move_uploaded_file a serwer FTP
Forum PHP.pl > Forum > Przedszkole
adas007
Czy używając funkcji move_uploaded_file mogę przesłać plik na sewer ftp ? Jeśli tak to jak to uczynić, jak podać adres,login,haslo do serwera ftp ?

Mam działajacy skrypt który wysyła mi pliki na mój lokalny serwer www. Chciałbym pzrerobić go by wysyłać plik pzrez protokół FTP.





  1. <?php
  2. if( is_uploaded_file( $_FILES['userfile']['tmp_name'] ) )
  3. {
  4.    $strUploadDir = 'C:/wamp/www/test1/graf/' . $_FILES['userfile']['name'];
  5.    if( move_uploaded_file( $_FILES['userfile']['tmp_name'], $strUploadDir ) )
  6.    {
  7.        echo 'Plik został pomyślnie uploadowany! <br />';
  8.    }
  9.    else
  10.    {
  11.        echo 'Upload pliku nie powiódł się!';
  12.    }
  13.   // echo 'Dodatkowe informacje o uploadowanym pliku: <pre>' . print_r( $_FILES, true ) . '</pre>';
  14. }
  15. else
  16. {
  17.    echo 'Wystąpił błąd podczas wysyłania pliku na serwer!';
  18. }
  19. ?>
nospor
http://pl2.php.net/manual/pl/book.ftp.php
adas007
Chyba mógłbym użyć zamiast :

  1. <?php
  2. move_uploaded_file( $_FILES['userfile']['tmp_name'], $strUploadDir )
  3. ?>


Funkcji:

  1. <?php
  2. $upload = ftp_put($conn_id, $destination_file, $source_file, FTP_BINARY);
  3. ?>


Tylko jak mam uzyskać ścieżkę: $source_file ? Plik wybieram selektorem plików w formularzu. Wiem, że nazwa pliku jest w elmencie tablicy: $_FILES['userfile']['tmp_name'] a jak uzyskać dostep do całej ścieżki do pliku ?
nospor
tu masz po polsku
http://pl.php.net/manual/pl/function.ftp-put.php

Cytat
<?php
$_FILES['userfile']['tmp_name']
?>

trzyma samą nazwę pliku a jak uzyskać całą ścieżkę
Sprawdz co to zawiera a nie strzelasz jakies nieprawdziwe teorie z glowy
adas007
sorry pomyłeczka nazwę pliku tzyma w elemencie
  1. <?php
  2. $_FILES['userfile']['name']
  3. ?>

Moj problem polega na tym, że nie wiem jak uzyskać pełną ścieżkę do pliku który wybrałem selektorem.
Wybieram go w ten sposób:

  1. <form enctype="multipart/form-data" action="do_bazy.php" method="POST">
  2. <input type="hidden" name="MAX_FILE_SIZE" value="10000000" />
  3. <tr>
  4. <td>Dołącz zdjęcie </td>
  5. <td><input name="userfile" type="file" /></td>
  6. Podaj opis
  7. <textarea name='opis' rows="10" cols="40" >
  8.  


W dokumentacji, którą mi podałeś nie ma odpowiedzi na to pytanie. Ja nie chce wpisywać "ręcznie" ścieżki do pliku,który zamierzam wysłać tylko po wyborze go przez selektor pliku przesłać jego ścieżkę do skryptu w którym znajdować się będzie funkcja ftp_put
nospor
no i twoj plik wlasnie znajduje sie tutaj:
$_FILES['userfile']['tmp_name']
Mozesz go odrazu uzyc, lub później. Ale jesli chcesz zrobic to później to musisz go gdziesz przeniesc (move_uploaded_file()), gdyz w $_FILES['userfile']['tmp_name'] znajduje sie tylko na dane ządanie.
adas007
Wyświetliłem sobie zawartość tego elementu:

  1. <?php
  2. echo $_FILES['userfile']['tmp_name'];
  3. ?>


I tam nie ma scieżki do miejsca w którym znajduje się plik, który zamierzam wysłać jest natomiast to:

C:\wamp\tmp\php417.tmp Czyli ścieżka do mojego lokalnego serwera www do katalogu tymczasowego.

Natomiast

<?php
echo $_FILES['userfile']['name'];
?>[/php]

Wyświetla tylko nazwę pliku np: fotka.jpg

Ja chce mieć całą ścieżkę dostępu do pliku abym mógł ją wstawić w miejsce argumentu string $plik_lokalny w funkcji
  1. <?php
  2. bool ftp_put ( resource $strumień_ftp , string $plik_zdalny , string $plik_lokalny , int $tryb [, int $pozycja_początkowa ] )
  3. ?>
Lars
Sprawdź co to jest...nazwy są zmieniane. To nie folder, to plik.
nospor
bo po uploadzie tam wlasnie znajduje sie plik smile.gif
Przeczytaj sobie dokladnie na czym polega upload bo widze nic nie kumasz. Jak juz to zrozumiesz do zajmij sie ftp'em
adas007
bo po uploadzie tam wlasnie znajduje sie plik
Przeczytaj sobie dokladnie na czym polega upload bo widze nic nie kumasz. Jak juz to zrozumiesz do zajmij sie ftp'em



Kumam więcej niż ci sie wydaje i widzę, ze mnie nie rozumiesz.....

Ta ścieżka C:\wamp\tmp\php441.tmp wskazuje miejsce na moim lokalnym serwerze więc mnie nie interesuje.
Bo chcę wysłać pli prze protokół tfp z wykorzystując funkcję:
  1. <?php
  2. ftp_put($conn_id, $destination_file, $source_file, FTP_BINARY);
  3. ?>


Do skorzystania z niej brakuje mi jednego argumentu: $source_file nie chce wpisywać ścieżki do pliku żródłowego ręcznie chce pobrać ją wykorzystując selektor pliku, którego kod jest wyżej.

Pytanie brzmi gdzie zapisana jest ściećka pliku który wybrałem selektorem bo nie jest to element tablicy o indeksie $_FILES['userfile']['tmp_name'] ani $_FILES['userfile']['name']
nospor
Cytat
Kumam więcej niż ci sie wydaje i widzę, ze mnie nie rozumiesz.....
To ci sie wydaje ze kumasz winksmiley.jpg Wybacz, ale Twoj ostatni post dobitnie swiadczy ze nie wiesz o czym mowisz, wiec sie nie sprzeczaj.

Cytat
Ta ścieżka C:\wamp\tmp\php441.tmp wskazuje miejsce na moim lokalnym serwerze więc mnie nie interesuje.
Skoro pracujesz lokalnie to twoim serwerem jest Twoj komputer, wiec ta sciezka wskazuje na twoj komputer. To jest dosc logicznie, nawet dla kogos "kto kuma".
Skoro chceszz ten plik przeslac ftpem to wlasnie tam on sie znajduje w $_FILES['userfile']['tmp_name'] i stamtad masz go wyslac!
adas007
Chce pobrać plik który znajduje się w jakims miejscu na dysku i cchę mieć dostęp do jego sciezki. Dla przykładu wybieram selektorem plik d:/costam/graficzka.jpg jak uzyskać tą ścieżkę .
nospor
zrozum, tej sciezki: d:/costam/graficzka.jpg nie dostaniesz. Nie ma takiej mozliwosci. Twoj plik po uploadzie znajduje sie w $_FILES['userfile']['tmp_name'] i stamtad wlasnie mozesz go sobie ftpnac.
adas007
No tak plik po uploadzie tam sie znajduje ($_FILES['userfile']['tmp_name']), ale zanim ten upload nastąpi muszę w funkcji ftp_put($conn_id, $destination_file, $source_file, FTP_BINARY); wskazać co uploaduje czyli wstawić adres pliku do uploadu w miejsce zmiennej $source_file. Więc muszę jakoś uzyskać ścieżkę dostępu do pliku zanim go wyśle czyli to przykładowe d:/costam/graf.jpg aby wstawić to w miejsce $source_file i o to cały zcas mi chodzi.
nospor
ty se jaja robisz? Caly czas ci tlumacze ze twoje $source_file to $_FILES['userfile']['tmp_name']
exclamation.gif!
zamykam
mike
~nospor to bez różnicy czy mu powtórzysz to raz czy sto razy ;-)
Cytat(adas007 @ 20.10.2008, 15:55:48 ) *
No tak plik po uploadzie tam sie znajduje ($_FILES['userfile']['tmp_name']), ale zanim ten upload nastąpi muszę w funkcji.
Zrozum, człowieku! Jeśli odczytujesz tą wartość to upload już się odbył! Ten plik tam jest.
Upload to przenoszenie pliku na serwer (w miejsce $_FILES['userfile']['tmp_name'] z komutera klienta), później następuje przenoszenie uploadowanego pliku i to może rozumiesz jako upload. Ale on już wykonał się wcześniej.
Gówno wiesz i nie dajesz sobie nic powiedzieć.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.