2013-10-26 2 views
0

Я использую django и cloudinary direct upload для загрузки iamges работает, если форма действительна.облачная прямая форма загрузки недопустима, необходимо повторно загрузить

, но если моя форма недействительна, моя страница перезагружается, а затем форма попросит пользователя снова загрузить изображение.

любой способ решить это?


мой код прилагается ниже. , так как я использую прямую загрузку, после загрузки изображения. он будет отображаться сразу на лицевой стороне. , но если форма недействительна и форма обновлена, изображение исчезнет. (после вашего последнего обновления, правда, мне больше не нужно снова загружать фотографию, но фотография ушла. Как отобразить это снова?)

спасибо.

<script> 
     $('.cloudinary-fileupload').bind('cloudinarydone', function(e, data) { 
      var imag_var = $.cloudinary.image(data.result.public_id, { 
       format : data.result.format, 
       version : data.result.version, 
       transformation : 'form_preview' 
      }); 
      $('.preview').html(imag_var); 
      $('.status_value').text('Uploaded:' + data.result.public_id); 
      $('#id_cover_image').val(data.result.public_id); 
      return true; 
     }); 
     $('.cloudinary-fileupload').bind('fileuploadprogress', function(e, data) { 
      $('.progress').attr({ 
       style : "visibility:show", 
      }); 
      $('.status_value').text('Uploading...'); 
     }); 
    </script> 

ответ

1

Плагин javascript для облаков помещает предварительно загруженный URI ресурса в скрытое поле. См. here.

Из вышеизложенного видно, что если поле уже существует, плагин javascript заполнит его. В противном случае это создаст его.

Чтобы сохранить этот URI через недопустимые формы, вы должны создать скрытое поле с именем в соответствии с именем поля, которое вы указали для cloudinary_direct_upload_field, и которое заполнено значением из неудавшейся заявки.

Другим способом решения проблемы является отправка формы с использованием вызова AJAX. Таким образом, данные на странице сохраняются, даже если проверка завершена и повторная отправка возможна. См. here для примера того, как это можно сделать.

EDIT:

Version 1.0.12 клиентской библиотеки Cloudinary Python теперь добавляет скрытое поле, когда это необходимо из коробки так Повторная подача должна работать. См. change log.

EDIT 2:

Для того чтобы регенерировать изображение для предварительного просмотра в случае ошибки проверки формы вы можете добавить что-то вроде этого в яваскрипте кода запускается при загрузке страницы (при условии, имя поля в форме является «образ»):

//If form validation failed have the posted preloaded URI from the earlier 
//submission so we can show preview 
//pull the value from the hidden field 
var imageUri = $('#direct_upload input[name="image"]').val(); 
//preloaded image URI structure 
//{resource_type}/{type}/v{version}/{filename}#{signature} 
var regex = /^([^\/]+)\/([^\/]+)\/v(\d+)\/([^#]+)#([^\/]+)$/; 
//if there is value and it matches the pattern: 
if (imageUri && regex.test(imageUri)) { 
    var uriParts = regex.exec(imageUri); 
    var version = uriParts[3]; 
    var filename = uriParts[4]; 
    //reconstruct a viable source 
    var src = "v" + version + "/" + filename; 
    //generate a cloudinary image tag and add it to the 'preview' div 
    $(".preview").append(
    $.cloudinary.image(src, { 
     transformation: "form_preview" //your named transformation 
    }) 
); 
} 
+0

благодаря , но я не уверен, что я понимаю, для первого метода могу я, пожалуйста, есть пример? В моем шаблоне я уже добавил {{link.image}}, где изображение является облачным именем, указанным в form.py – user2673206

+0

отлично! я попробую сегодня вечером и дам вам знать результат. большое спасибо. этот вопрос сильно меня разочаровал. держать вас в курсе. – user2673206

+0

привет, я просто устал. почти нормально. повторная передача работает. но после обновления, как отобразить загруженный рис? Благодарю. – user2673206

Смежные вопросы