Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [jQuery] uploadify - upload do różnych katalogów
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
marcinpruciak
Robię sobie mini file_manager. Chciałbym uploadowac pliki poprzeż uploadify do katalogu w którym się aktualnie znajduję. Wszystko mam już dopracowane, wyprowadzoną ścieżkę. 

Ale uploadify potrafi wrzucać tylko do głównego katalogu. Nie zwraca żadnego błędu, ale plików nie ma.

Kod wygląda tak:

  1. $("#fileUploadname").fileUpload({
  2. 'uploader': '/NewKohana/vendor/jquery/uploadify/uploader.swf',
  3. 'cancelImg': '/NewKohana/vendor/jquery/uploadify/cancel.png',
  4. 'script': '/NewKohana/upload.php?path='+path,
  5. 'folder': path,
  6. 'multi': true,
  7. 'displayData': 'percentage',
  8.  
  9. });
  10.  
  11. });


  1. $tempFile = $_FILES['Filedata']['tmp_name'];
  2. $path_to_upload = '';
  3. $path_to_upload = str_replace(',', '/', $_GET['path']);
  4. $targetPath = 'media/'.$path_to_upload;
  5. $targetFile = str_replace('//','/',$targetPath) .'/'. $_FILES['Filedata']['name'];
  6. (move_uploaded_file($tempFile,$targetFile));
  7. echo '1';


Ścieżka jest zapisana w zmiennej path w javascripcie. Zamiast slasha ma przecinek. Zaczyna się od przecinka np. ,grafiki,layout

erix
Spróbuj:
[JAVASCRIPT] pobierz, plaintext
  1. 'script': '/NewKohana/upload.php?path='+encodeURIComponent(path),
[JAVASCRIPT] pobierz, plaintext
marcinpruciak
Nie pomogło.

A to php jest napewno dobrze? Bo teraz nie uploaduje wcale, nawet do głownego, ale jeśli usunę dane z geta to wtedy działa.

  1. $tempFile = $_FILES['Filedata']['tmp_name'];
  2. $path_to_upload = '';
  3. $path_to_upload = str_replace(',', '/', $_GET['path']);
  4.   $targetPath = 'media/';//.$path_to_upload;
  5. $targetFile = str_replace('//','/',$targetPath) .'/'. $_FILES['Filedata']['name'];
  6. (move_uploaded_file($tempFile,$targetFile));
  7. echo '1';


erix
Pokaż, co zwraca var_dump dla tablic z danymi żądania (GET, POST).
marcinpruciak
Jak to zobaczyć, jak to jest wykonywane w tle ajaxem? Jeśli uruchamiam plik ręcznie to wyswietla mi to co podam do zmiennej.
ActivePlayer
uzyj file_put_contents i zrob sobie jakis plik z 'logami'. jak wykonasz request to wtedy Ci sie tam zapiszą dane
marcinpruciak
 Może mi ktoś wytłumaczyć dlaczego zmienna path w jednym miejscu jest undefined a w drugim poprawna?

  1. $("#fileUploadname").fileUpload({
  2. 'uploader': '/NewKohana/vendor/jquery/uploadify/uploader.swf',
  3. 'cancelImg': '/NewKohana/vendor/jquery/uploadify/cancel.png',
  4. 'script': '/NewKohana/upload.php',
  5. 'folder': "/"+path,
  6. 'multi': true,
  7. 'displayData': 'percentage',
  8. /*onComplete: function (evt, queueID, fileObj, response, data) {
  9. // $("#upload").load("/NewKohana/admin.php/gallery_ajax/uploaded/"+fileObj.name);
  10. alert(path);
  11. }*/
  12. onAllComplete: function (evt, data){
  13. //alert(path);
  14. var id = $(this).attr("id");
  15. $("#sortable").html("");
  16. $.getJSON("http://192.168.9.101/NewKohana/admin.php/file_manager/listing/"+path,
  17. function dates(data){
  18. $.each(data, function(i,item){
  19. $("<ul>").html('<li class="ui-selectable" type="' + item.type + '" id="'+item.path+','+item.name+'"><span class="name">'+item.name+'</span> '+item.type+' <span class="size">'+item.size+'</span></li>').appendTo("#sortable");
  20. $("#path").load("http://192.168.9.101/NewKohana/admin.php/file_manager/generate_path/"+item.path);
  21. path = item.path;
  22. //$("<ul>").html(html).appendTo("#sortable");
  23. });
  24. });
  25.  
  26. }
  27.  
  28. });


Tam na dole przy json działa ok a przy 'folder' jest undefined.



Nikt nie wie?
erix
Pokaż większą część kodu.
marcinpruciak
Kod jest troche brzydki

Tutaj definiuję zmienną path.

  1. var path;
  2. var path;
  3. $(document).ready(function(){
  4. $.getJSON("/NewKohana/admin.php/file_manager/listing/",
  5. function dates(data){
  6. $.each(data, function(i,item){
  7. $("<ul>").html('<li class="ui-selectable" type="' + item.type + '" id="'+item.path+','+item.name+'"><span class="name">'+item.name+'</span> '+item.type+' <span class="size">'+item.size+'</span></li>').appendTo("#sortable");
  8. $("#path").load("/NewKohana/admin.php/file_manager/generate_path/"+item.path);
  9. path = item.path;
  10. });
  11. });
  12. $("li").live("dblclick", function(){
  13. var id = $(this).attr("id");
  14. $("#sortable").html("");
  15. $.getJSON("/NewKohana/admin.php/file_manager/listing/"+id,
  16. function dates(data){
  17. $.each(data, function(i,item){
  18. $("<ul>").html('<li class="ui-selectable" type="' + item.type + '" id="'+item.path+','+item.name+'"><span class="name">'+item.name+'</span> '+item.type+' <span class="size">'+item.size+'</span></li>').appendTo("#sortable");
  19. $("#path").load("/NewKohana/admin.php/file_manager/generate_path/"+item.path);//.replace(/,/gi,"/");
  20. path = item.path;
  21. });
  22. });
  23. });
  24.  
  25.  
  26. $(".ui-selectable").live("mousedown", function(){
  27. //alert($(this).attr("id"));
  28. $("li").removeClass("ui-selected");
  29. $("li").removeClass("ui-selecting");
  30. $(this).addClass("ui-selected");
  31. var id = $(this).attr("id").replace(/\s+/g, 'xxx');
  32. $("#select-result").load("/NewKohana/admin.php/file_manager/get_sidebar/"+id);
  33. });
  34.  
  35. $('#sortable .ui-selectable').live('mouseover', function() {
  36. $('.ui-selectable').draggable({
  37. helper:'clone',
  38. start: function(){
  39. $(this).addClass("ui-moving");
  40. },
  41. stop: function(){
  42. $(this).removeClass("ui-moving");
  43. }
  44. });
  45.   });


...

  1. $("#fileUploadname").fileUpload({
  2. 'uploader': '/NewKohana/vendor/jquery/uploadify/uploader.swf',
  3. 'cancelImg': '/NewKohana/vendor/jquery/uploadify/cancel.png',
  4. 'script': '/NewKohana/upload.php',
  5. 'folder': "/"+path,
  6. 'multi': true,
  7. 'displayData': 'percentage',
  8. /*onComplete: function (evt, queueID, fileObj, response, data) {
  9. // $("#upload").load("/NewKohana/admin.php/gallery_ajax/uploaded/"+fileObj.name);
  10. alert(path);
  11. }*/
  12. onAllComplete: function (evt, data){
  13. //alert(path);
  14. var id = $(this).attr("id");
  15. $("#sortable").html("");
  16. $.getJSON("/NewKohana/admin.php/file_manager/listing/"+path,
  17. function dates(data){
  18. $.each(data, function(i,item){
  19. $("<ul>").html('<li class="ui-selectable" type="' + item.type + '" id="'+item.path+','+item.name+'"><span class="name">'+item.name+'</span> '+item.type+' <span class="size">'+item.size+'</span></li>').appendTo("#sortable");
  20. $("#path").load("/NewKohana/admin.php/file_manager/generate_path/"+item.path);
  21. path = item.path;
  22. //$("<ul>").html(html).appendTo("#sortable");
  23. });
  24. });
  25.  
  26. }
  27.  
  28. });



Tyle mam kodu z wykorzystaniem tej zmiennej. Powtarza sie on jeszcze w kilku miejscach i w każdym działa tak samo.

erix
Zdefiniuj
[JAVASCRIPT] pobierz, plaintext
  1. var path
[JAVASCRIPT] pobierz, plaintext

jako
[JAVASCRIPT] pobierz, plaintext
  1. path = '';
[JAVASCRIPT] pobierz, plaintext
marcinpruciak
To teraz wszystko leci do głownego katalogu. Czyta ją jako ''.
erix
Ok, a takie proste pytanie: na jaką wartość ma ta zmienna wskazywać? Bo z tego co zauważyłem, to tylko w jednym miejscu ustawiasz.
marcinpruciak
Ustawiam to w dwóch miejscach. Jest to ścieżka do aktualnego folderu, w którym znajduje się użytkownik. Pochodzi z json i tu jest na pewno wszystko dobrze.

Nikt nie ma pomysłu jak to rozwiązać?

Może w jakiś inny sposób. Może jakiś inny uploader albo coś. Chociaż zawsze używałem uploadify i zawsze jego możliwości mi wystarczały.

erix
Puść gdzieś ten skrypt na żywo.

Jeśli chodzi o inny skrypt, to polecam SWFUpload. Próbowałem kiedyś poprzestać na samym Uploadify, ale nie dość, że w kodzie biblioteki jest dosłownie śmietnik, to działy się jakieś dziwne rzeczy. Niestety, nie pamiętam, co konkretnie, bo było to jakiś czas temu, ale problemy wymusiły na mnie wymianę skryptu.

SWFUpload ma potężne możliwości, przejrzyj dema. winksmiley.jpg
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.