2013-11-28 3 views
0

Я пытаюсь дать пользователям возможность импортировать данные из файла, расположенного на компьютере с помощью jQuery EasyUI form widget:загрузить файл с помощью AJAX с JQuery легко щ

<form id="my_form" method="POST"> 
    <input type="file" name="my_file" id="my_file" /> 
</form> 

var file_name = $('#my_file').val(); 

if(file_name) 
{  
    $('#my_form').form('submit', { 
     url: [url_to_call], 
     onSubmit: function(param){ 
      param.file_path = file_name; 
     } 
    }); 
} 

Затем, когда просматривание пользователя на его/ее компьютер для файла, я хочу отправить путь к jQuery ajax-запросу для выполнения некоторых действий по загрузке. У меня есть проблема в том, что filename возвращает что-то вроде этого:

C:\fakepath\[name_of_file] 

Из-за fakepath строк, я не получаю реальный путь туда, где находится файл на компьютере пользователя. Кто-нибудь знает, как я могу решить эту проблему, пожалуйста?

Спасибо

+1

Вы не можете на самом деле загрузите файл с помощью ajax, вам нужно либо загрузить объект formData, либо для не поддерживающих браузеров использовать iframe. – adeneo

+0

@adeneo Nope, я внедрил загрузку Ajax в одном из моих приложений, которое поддерживало загрузку изображения IE7 +. Я показываю им предварительный просмотр изображения сразу после загрузки (без обновления страницы). – Adrian

+0

Почему бы не использовать Google? для поклонников ajax и файлов-upload это может быть из самого заданного вопроса arround –

ответ

0

Попробовал этот плагин http://malsup.com/jquery/form/#getting-started

этот плагин обеспечивает метод, называемый AjaxSubmit(), который работает отлично подходит для загрузки образа. Я использовал его в 2011 году.

У него есть проблема в IE (старая версия вроде 6,7). Вам нужно написать несколько хаков. на бэкэнд Firefox и IE загрузите правильный формат файлового потока, например Data/Image, но в Chrome (Webkit) вы получите Octet Stream. Вам нужно проанализировать формат файла на сервере, чтобы проверить, что файл не является неправильным.

0

Я понятия не имею, что делает ваша form() функция, так как нет такого метода не существует в JQuery, но обычный способ загрузки файла на сервер будет что-то вроде этого:

$('#my_file').on('change', function() { 
    $.ajax({ 
     url : [url_to_call], 
     data : new FormData($('#my_form').get(0)), 
     processData: false, 
     contenttype: false 
    }).done(function(param) { 
     param.file_path = file_name; 
    }); 
}); 
+0

ваш * #grammarpolice –

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