Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Uploadowanie plików na serwer
Forum PHP.pl > Forum > PHP
b2r
Witam, mam problem.
Gdzie i jak wpisać adres serwera, np. mojserver.com/upload/ aby uploadowało pliki właśnie do tego katalogu, a nie do katalogu tam gdzie jest skrypt? (skrypt mam w mojserwer.com/test/ a chciałbym aby pliki znajdowały się po wrzuceniu w mojserwer.com/upload/)


  1. <?php
  2. /*************************************************
  3.  * Max's File Uploader
  4.  *
  5.  * Version: 1.0
  6.  * Date: 2007-11-26
  7.  *
  8.  ****************************************************/
  9. class maxUpload{
  10.    var $uploadLocation;
  11.    
  12.    /**
  13.      * Constructor to initialize class varaibles
  14.      * The uploadLocation will be set to the actual
  15.      * working directory
  16.      *
  17.      * @return maxUpload
  18.      */
  19.    function maxUpload(){
  20.        $this->uploadLocation = getcwd().DIRECTORY_SEPARATOR;
  21.    }
  22.  
  23.    /**
  24.      * This function sets the directory where to upload the file
  25.      * In case of Windows server use the form: c:\temp
  26.      * In case of Unix server use the form: /tmp/
  27.      *
  28.      * @param String Directory where to store the files
  29.      */
  30.    function setUploadLocation($dir){
  31.        $this->uploadLocation = $dir;
  32.    }
  33.    
  34.    function showUploadForm($msg='',$error=''){
  35. ?>
  36.       <div id="container">
  37.            <div id="header"><div id="header_left"></div>
  38.            <div id="header_main">Max's File Uploader</div><div id="header_right"></div></div>
  39.            <div id="content">
  40. <?php
  41. if ($msg != ''){
  42.    echo '<p class="msg">'.$msg.'</p>';
  43. } else if ($error != ''){
  44.    echo '<p class="emsg">'.$error.'</p>';
  45.  
  46. }
  47. ?>
  48.                <form action="" method="post" enctype="multipart/form-data" >
  49.                     <center>
  50.                         <label>File:
  51.                             <input name="myfile" type="file" size="30" />
  52.                         </label>
  53.                         <label>
  54.                             <input type="submit" name="submitBtn" class="sbtn" value="Upload" />
  55.                         </label>
  56.                     </center>
  57.                 </form>
  58.             </div>
  59.             <div id="footer"><a href="http://www.phpf1.com" target="_blank">Powered by PHP F1</a></div>
  60.         </div>
  61. <?php
  62.    }
  63.  
  64.    function uploadFile(){
  65.        if (!isset($_POST['submitBtn'])){
  66.            $this->showUploadForm();
  67.        } else {
  68.            $msg = '';
  69.            $error = '';
  70.            
  71.            //Check destination directory
  72.            if (!file_exists($this->uploadLocation)){
  73.                $error = "The target directory doesn't exists!";
  74.            } else if (!is_writeable($this->uploadLocation)) {
  75.                $error = "The target directory is not writeable!";
  76.            } else {
  77.                $target_path = $this->uploadLocation . basename( $_FILES['myfile']['name']);
  78.  
  79.                if(@move_uploaded_file($_FILES['myfile']['tmp_name'], $target_path)) {
  80.                    $msg = basename( $_FILES['myfile']['name']).
  81.                    " was uploaded successfully!";
  82.                } else{
  83.                    $error = "The upload process failed!";
  84.                }
  85.            }
  86.  
  87.            $this->showUploadForm($msg,$error);
  88.        }
  89.  
  90.    }
  91.  
  92. }
  93. ?>
admix
$up = new maxUpload();
$up->setUploadLocation('../upload/');

jeśli skrypt jest w mojserwer.com/test/ cofasz się do mojserwer.com używając .. a później wskazujesz folder upload. Jeśli skrypt będzie w mojserwer.com podajesz tylko 'upload/'
b2r
Kurcze, nie działa.

  1. <?php
  2. function setUploadLocation($dir){
  3.        $this->uploadLocation = ("../uploaded/");
  4.    }
  5.    
  6.    function showUploadForm($msg='',$error=''){
  7. ?>


$this->uploadLocation = ("../uploaded/") - chodzi o tę linię?
admix
Na początku pisałeś że folder nazywa się 'upload' a wstawiłeś 'uploaded' - sprawdź nazwę folderu i czy masz prawa zapisu w nim.
b2r
Nazwa folderu nie jest ważna smile.gif. A prawa są.
Za każdym razem uploaduje pliki do folderu gdzie znajduje się skrypt...
admix
Ale nie wystarczy że ustawiłeś w funkcji setUploadLocation nową lokalizację - musisz ją jeszcze wywołać żeby została zmieniona.

$up = new maxUpload(); // w tym momencie ustawiana jest ścieżka domyślna czyli folder w którym jest skrypt
$up->setUploadLocation( '../upload/' ); // tu ją zmieniasz
$up->uploadFile(); // i pokazujesz formularz
b2r
Mógłbyś dokładnie wpisać "tak jak ma być"? Ze ścieżkami?
admix
Napisałem Ci wyżej

Cytat(admix @ 13.06.2009, 01:35:52 ) *
$up = new maxUpload(); // w tym momencie ustawiana jest ścieżka domyślna czyli folder w którym jest skrypt
$up->setUploadLocation( '../upload/' ); // tu ją zmieniasz
$up->uploadFile(); // i pokazujesz formularz


Użyj tego kodu i napewno będzie działać - oczywiście pod warunkiem że przywrócisz poprzedią wersję funkcji setUploadLocation czyli:

  1. <?php
  2. function setUploadLocation($dir){
  3.       $this->uploadLocation = $dir;
  4.   }
  5. ?>
b2r
Dobra, jestem noobem ;p

Wklej mi cały GOTOWY kod jak możesz. Skrypt mam w mojserver.com/upload/ (i skrypt domyślnie tam uploaduje pliki), a pliki uploadowane chcę mieć w mojserver.com/uploaded/

Z góry dzięki.
erix
Gotowca? Kpisz?
b2r
Nie, po prostu to co zrobię to nie działa... Czytaj - nie potrafię.

edit: to są AŻ 3 linijki...
erix
No to pokaż, co robisz i co nie działa.

Łącznie z błędami.
b2r
  1. <?php
  2. function setUploadLocation($dir){
  3.       $this->uploadLocation = ("../uploaded/");
  4.   }
  5.  
  6.   function showUploadForm($msg='',$error=''){
  7. ?>


  1. <?php
  2. function setUploadLocation($dir){
  3.       $this->uploadLocation = ('../uploaded/');
  4.   }
  5.  
  6.   function showUploadForm($msg='',$error=''){
  7. ?>


Błędów brak, pliki cały czas uploadowane są do folderu tam gdzie znajduje się skrypt.

Niestety, nie wiem też jak "wskazać" formularz.
erix
Ok, to teraz sobie tę zmienną przed move_uploaded_file" title="Zobacz w manualu PHP" target="_manual prześledź przy każdej ze zmian.
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.