2010-10-22 11 views
5

Utknąłem. Używam uploadify do przesyłania wielu plików na mój serwer s3. Chciałbym umieścić każdy plik w folderze, który ma unikalny identyfikator. Co miałem nadzieję zrobić, to skorzystać z tej składni, aby osiągnąć ten (uwaga UUID jest plugin jquery do generowania UUID):uploadify | zmieniając uploadifysettings w locie

'onComplete' : function(event,queueId,fileObj,response) { 
    $('#fileInput').uploadifySettings('folder',$.uuid()) 
} 

Mój problem jest to, że kiedy ta funkcja zwrotna jest wywoływana - nie mam już dostępu do $('#fileInput').uploadifySettings(x,y) Uważam, że jest to niezdefiniowana metoda?!

Inne Uploadify ustawienia Uwaga:

'auto': 'true' 
'multi': 'true' 

a ja uploading bezpośrednio do Amazon S3

ktoś napotkasz tego? Pomysły na rozwiązanie?

Dzięki!

+0

Mam teraz dokładnie ten sam problem. Wywołanie funkcji uploadifySettings powoduje zawieszenie mojego skryptu. – o01

Odpowiedz

1

Mam nadzieję, że nie całkiem pomijam twoje pytanie.

Czy nie byłoby łatwo to zrobić po stronie serwera? Musisz mimo wszystko obsługiwać przesyłanie po stronie serwera, co zazwyczaj wiąże się z pobieraniem przesłanego pliku z tymczasowej lokalizacji, upewnij się, że to nie jest złe, a następnie skopiuj go do ostatecznego miejsca spoczynku.

W tym ostatnim etapie kopiowania można łatwo wprowadzić uuid (w tym przypadku generowane również po stronie serwera, jak przypuszczam).

Czy to byłoby prawidłowe podejście, czy też brakuje mi wymaganego wymagania?

+0

Dziękuję za dzwonienie. Przesyłam pliki bezpośrednio do Amazon s3, a gdybym mógł użyć wywołań zwrotnych do mojego serwera, aby przenieść plik po załadowaniu, z pewnością łatwiej byłoby umieścić je w odpowiednim miejscu, aby zacząć. Ale - tylko jeśli to możliwe! – Jonathan

+0

@ Jonathan: Ah, dlatego chcesz to zrobić w ten sposób. Nadal uważam, że można to zrobić tak, jak opisałeś, ale może to wymagać zmiany atrybutu uploadify innards, chyba że jest jakieś wydarzenie/opcja, którą dotychczas przeoczyłem. Nie jestem pewien, czy mogliby na to patrzeć. Nie będę mógł dalej dochodzić do jutra, ale jestem ciekawy, jak to rozgryźć. ;) – Thomas

+0

Fajnie - chciałbym poznać każdy szczegół - nie jestem ekspertem od javascript. To dziwne, jak uploadifySettings zachowuje się podczas swoich wydarzeń. Dzięki za pomoc. – Jonathan

3

I rozwiązać ten sam problem w następujący sposób, zmieniając scriptData „onSelect”, więc po wybraniu nowego pliku:

onSelect : function(){ 
      $('#images_upload_file').uploadifySettings("scriptData", {'yourvar': yourvalue }); 
     }, 

który wydaje się rade

+1

Dzięki. To nie działa dla mnie. Pytanie, w ustawieniach używasz auto: prawda i/lub wiele: prawda? Zastanawiam się, czy to winni. A jeśli tak - czy jest jakieś obejście - wielokrotne przesyłanie jest wymagane dla mnie – Jonathan

+0

^^ śledzenie - czy to działało dla ciebie z ustawieniem auto i multi na true? – Jonathan

+0

Mam ustawione auto na true – Jorre

0

miałem ten sam problem. Po wielu godzinach bólu ostatecznie rozwiązałem go ręcznie, manipulując ciągiem flashvars, który jest przekazywany do obiektu do przesyłania plików flash.

Biorąc pod uwagę ten element HTML:

<div id="file_upload" name="file_upload"></div> 

przystąpię do zainicjowania Uploadify na tym elemencie z tym:

$('#file_upload').uploadify({ 
    // Empty folder path 
    'folder' : '' 
}); 

Dodaje element <object> kilka <param> dzieci do swojej pliku HTML. Jeden z tych elementów <param> nosi nazwę "flashvars", a jego wartość ciągu zawiera ścieżkę do folderu przesyłania. Tak, aby zmienić folder wartość, że ten ciąg wyszukiwania dla „Folder =” argumentu tak:

// Find correct <param> element and retrieve it's value 
var found = $("#file_uploadUploader").find("param[name=flashvars]").val(); 

// Search within that value for the specific folder argument using a regex 
// and replace find with new_path 
found = found.replace(/folder\=.*\/&/, "folder="+new_path+"&"); 

nadzieję, że to pomaga.