Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [AJAX] Upload plików
martinii007
post
Post #1





Grupa: Zarejestrowani
Postów: 80
Pomógł: 0
Dołączył: 15.12.2011

Ostrzeżenie: (0%)
-----


Hej

Jestem tu nowy (IMG:style_emoticons/default/smile.gif) Mam nadzieję, ze ktoś zarzuci dobrą radą (IMG:style_emoticons/default/smile.gif)
Przechodząc do sedna, mam napisany upload plików w AJAXIE, aktualnie przerabiam go w następujący sposób:

1. Pierwsza przeróbka dotyczyła zmiany nazw plików które user wczytuje na serwer na jego imię i nazwisko tj. jeżeli user wgra plik 1s2ff2.pdf to jego nazwa zostanie zmieniona na jego imię i nazwisko czyli imienazwiskousera.pdf.

To udało mi się zrobić dyrektywą:
  1. $file_strip = str_replace("{$filename}","{$id}{$ext}",$filename);


2. Nie chcę, aby w pliku uploads był totalny miszmasz dlatego chcę stworzyć folder do którego będę ładować poszczególne pliki usera (folder ma również zawierać jego imię i nazwisko). Konkretnie chodzi o to, że jeżeli na stronie rejestruje się Jan Kowalski to zostaje z automatu stworzony taki folder i wszystkie pliki o takiej nazwie są tam ładowane.

  1. <?php
  2.  
  3. $id = "Marcin"; // przykładowy string, docelowo będzie tu Imie i nazwisko usera
  4. mkdir("uploads/{$id}/",0777, true);
  5. $max_filesize = 2097152; // Maximum filesize in BYTES.
  6. $allowed_filetypes = array('.jpg','.jpeg','.gif','.zip'); // These will be the types of file that will pass the validation.
  7. $filename = $_FILES['userfile']['name']; // Get the name of the file (including file extension).
  8. $ext = substr($filename, strpos($filename,'.'), strlen($filename)-1); // Get the extension from the filename.
  9. $file_strip = str_replace("{$filename}","{$id}{$ext}",$filename);
  10.  
  11. $upload_path = 'uploads/'; //Set upload path
  12.  
  13.  
  14. // Check if the filetype is allowed, if not DIE and inform the user.
  15. if(!in_array($ext,$allowed_filetypes)) {
  16. die('<div class="error">The file you attempted to upload is not allowed.</div>');
  17. }
  18. // Now check the filesize, if it is too large then DIE and inform the user.
  19. if(filesize($_FILES['userfile']['tmp_name']) > $max_filesize) {
  20. die('<div class="error">The file you attempted to upload is too large.</div>');
  21. }
  22. // Check if we can upload to the specified path, if not DIE and inform the user.
  23. if(!is_writable($upload_path)) {
  24. die('<div class="error">You cannot upload to the /uploads/ folder. The permissions must be changed.</div>');
  25. }
  26. // Move the file if eveything checks out.
  27. if(move_uploaded_file($_FILES['userfile']['tmp_name'],$upload_path . $file_strip)) {
  28. echo '<div class="success">'. $file_strip .' uploaded successfully</div>'; // It worked.
  29. } else {
  30. echo '<div class="error">'. $file_strip .' was not uploaded. Please try again.</div>'; // It failed :(.
  31. }
  32. ?>


Chciałem to zrobić w następujący sposób:

  1. $a = mkdir("uploads/{$id}/",0777, true);
  2. $upload_path = 'uploads/{$a}/'; //Set upload path
  3. chmod('uploads/{$a}/', 0777);


Nie da się ponieważ wyrzuca błąd: You cannot upload to the /uploads/ folder. The permissions must be changed
Próbowałem zmieniać chomda na różne sposoby, ale żadnego efektu. Później zauważyłem, że nie jest możliwe przypisanie mkdira do określonej zmiennej bo on się wykona nawet jak nie wykorzystam tej zmiennej w programie...

Ma ktoś jakieś rozwiązanie ?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
Sephirus
post
Post #2





Grupa: Zarejestrowani
Postów: 1 527
Pomógł: 438
Dołączył: 28.06.2011
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Dałeś "ręcznie" katalogowi "uploads" uprawnienia 777?
Go to the top of the page
+Quote Post
martinii007
post
Post #3





Grupa: Zarejestrowani
Postów: 80
Pomógł: 0
Dołączył: 15.12.2011

Ostrzeżenie: (0%)
-----


Do folderu upload normalnie pliki uploaduje natomiast do tego stworzonego z automatu nie, więc nie wiem czemu nie działa. Jak przypisze source=upload to normalnie zaplouduje w innym przypadku nie. W załączniku przesyłam całą paczkę więc możesz potestować u siebie. Dzięki za szybką odpowiedź (IMG:style_emoticons/default/smile.gif)
AJAX

Ten post edytował martinii007 15.12.2011, 18:53:34
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 01:29