jquery, как загрузить изображение ввода (файла) через веб-сервис в codebehind и прочитать там

0

Я хочу сохранить изображение ввода (type = file) в базу данных (asp.net & mssql),
в этом случае я использую веб-службу, поэтому я не могу использовать runat = server, или я не могу использовать серверные элементы управления.

на стороне клиента пользователь выбрал изображение, и я должен сохранить его в базе данных.

var exts = ['jpg', 'jpeg', 'png', 'gif'];  
var file = $(this).val();
if (file) {
                var get_ext = file.split('.');
                get_ext = get_ext.reverse();
                if ($.inArray(get_ext[0].toLowerCase(), exts) > -1) {
                    if ((Math.round((this.files[0].size) / 1024)) > 35) {
                        alert("PLEASE REDUCE FILE SIZE");
                    } else {
                        //everything is ok
                    }
                } else {
                    alert("PLEASE CORRECT FORMAT");
                }
            } else {
                alert("PLEASE DEFINE FILE");
  }

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

Что я могу сделать? можно ли поддерживать, т.е.? если да, то какая версия?

Спасибо

  • 0
    самый простой способ сделать это - отправить форму, содержащую данные, и получить данные файла из запроса на сервере. Зачем вам нужен веб-сервис?
  • 0
    я не хочу обновления страницы, я использую веб-сервис и страницу без обновления отправлять и получать данные с сервера, это помогает пользователю работать лучше.
Теги:

1 ответ

0

Вы должны загрузить изображение в форме, используя следующий тег:

<form id='fileUploadForm' enctype="multipart/form-data" method="post" action="yourAction">          
<input type="hidden" value="your max value in bytes" name="MAX_FILE_SIZE">
<input type="file" name="userImage">
</form>

Он будет отправлен для любого браузера.

Но если вы хотите отправить форму с помощью ajax, вы должны использовать плагин. Я использовал недавно этот: http://malsup.github.io/jquery.form.js. Это очень просто использовать.

Существует еще одна проблема: files[0] возвращаются undefined при использовании IE.

Я использую это так, чтобы IE также работал:

var file = $('input[type=file]')
file.bind('change', function(e) {
    e.preventDefault();
    if (typeof this.files === "undefined") fileOk = file;
    else fileOk = this.files[0];
            ....

Затем и после проверки на стороне клиента вы можете использовать этот метод из плагина jquery.form:

$('#fileUploadForm').ajaxSubmit(){
    beforeSend: function() {},
    uploadProgress: function(event, position, total, percentComplete) {},
    success: function() {},
    complete: function(xhr) {}
}

И файл будет отправлен.

  • 0
    спасибо за ваш полный ответ, позвольте мне проверить.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню