Я хочу сохранить изображение ввода (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");
}
я могу проверить выбранный файл, тип и размер и знать, что нужно загружать.
Что я могу сделать? можно ли поддерживать, т.е.? если да, то какая версия?
Спасибо
Вы должны загрузить изображение в форме, используя следующий тег:
<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) {}
}
И файл будет отправлен.