2013-02-27 13 views
8

Pytanie jest związane jquery file upload plugin from blueimpOpcjonalnie File Upload z Blueimp wysyłania pliku jquery plugin

buduję formę gdzie załadowania pliku są opcjonalne. Okazuje się, że nie mogę wysłać formularza, gdy nie ma plików wybranych do przesłania. Właśnie z tego powodu muszę utworzyć dwa formularze na mojej stronie i wykonać wszystkie brudne sprawdzenia, aby usunąć przesłane pliki, jeśli użytkownik zdecyduje się nie dodawać rzeczywistych danych.

Pytanie brzmi:

mogę przesłać formularz nawet jeśli żadne pliki nie są tak dobrane, że mogę nadal będą mogli otrzymać dodatkowe dane z formularza na stronie serwera?

+0

czy próbowałeś tego: $ ("#fileupload") .submit(); –

+0

Możesz opublikować formularz, nawet jeśli plik nie został wybrany. Nie powinieneś tworzyć dwóch formularzy. – Max

+0

@Max jak to zrobić? – Dan

Odpowiedz

0

wiem, jest to stara sprawa, ale dla tych, który zmaga się z tym samym numerze:

trzeba kopać w Doc tu:

https://github.com/blueimp/jQuery-File-Upload/wiki/Options

I jest lista pomocne zdarzenia:

$('#fileupload') 
.bind('fileuploadadd', function (e, data) {/* ... */}) 
.bind('fileuploadsubmit', function (e, data) {/* ... */}) 
.bind('fileuploadsend', function (e, data) {/* ... */}) 
.bind('fileuploaddone', function (e, data) {/* ... */}) 
.bind('fileuploadfail', function (e, data) {/* ... */}) 
.bind('fileuploadalways', function (e, data) {/* ... */}) 
.bind('fileuploadprogress', function (e, data) {/* ... */}) 
.bind('fileuploadprogressall', function (e, data) {/* ... */}) 
.bind('fileuploadstart', function (e) {/* ... */}) 
.bind('fileuploadstop', function (e) {/* ... */}) 
.bind('fileuploadchange', function (e, data) {/* ... */}) 
.bind('fileuploadpaste', function (e, data) {/* ... */}) 
.bind('fileuploaddrop', function (e, data) {/* ... */}) 
.bind('fileuploaddragover', function (e) {/* ... */}) 
.bind('fileuploadchunksend', function (e, data) {/* ... */}) 
.bind('fileuploadchunkdone', function (e, data) {/* ... */}) 
.bind('fileuploadchunkfail', function (e, data) {/* ... */}) 
.bind('fileuploadchunkalways', function (e, data) {/* ... */}); 
+0

Czy któreś z tych wydarzeń są odpowiedzią na pytanie? – Agey

4

Sam mam ten sam problem. Mam formularz (zbudowany w Angular), używając impedancji kątowej imp. Sam formularz ma pola; plik jest opcjonalny. Musi być jednym postem (z plikiem lub bez niego).

Na submit() nic się nie dzieje.

"Pomocnicze zdarzenia" wymienione powyżej są uruchamiane tylko po dodaniu pliku.

0

Ustawienie SingleFileUploads na nie pomogło w korzystaniu z narzędzia do przesyłania plików JQuery, ponieważ wydaje się, że wystąpił błąd opisany jako here. Więc przywracam to do prawdy.

Rozdzieliłem dane wejściowe na dwie osobne formy - jedną dla wprowadzania pól tekstowych i jedną dla plików (która przechodzi przez narzędzie do przesyłania plików JQuery). W formularzu pól tekstowych trzymałem widoczny przycisk, który użytkownik może kliknąć. Dla drugiego ukryłem przycisk. Tak więc, gdy użytkownik kliknie widoczny przycisk, przesyłam tylko tekst i tworzę rekord bazy danych w backend (odbywa się to za pomocą wywołania AJAX) iw polu powodzenia wywołania AJAX, I .click() ukryty przycisk, jeśli liczba plików jest większa niż 0.

0

Wiem, że spóźniam się na imprezę, ale do tej pory nie znalazłem prawdziwego rozwiązania. Można fałszywy faktu, że jest to plik dodawanego przez ręczne wywołanie imprezę Dodaj takiego:

$('#fileupload').fileupload('add', { files: [{}] }); 

byś ustawienie zmiennej do przechowywania informacji formularz, zaktualizuj zmienną podczas dodawania i wywołać dodatek jak powyżej, jeśli nie było pliku. Oto, jak kod wyglądałby:

var fileData; 
$('#fileupload').fileupload({ 
    add: function (e, data) { 
     fileData = data; 
    } 
}); 

$('form').submit(function() { 
    if (!fileData) { 
     $('#fileupload').fileupload('add', { files: [{}] }); 
    } 
    fileData.formData = params; 
    fileData.submit(); 
    return false; 
}); 

Pozwala to zachować spójność z przekazywaniem danych do serwera.

Powiązane problemy