Я пытаюсь предоставить пользователям возможность импортировать данные из файла, который находится на их компьютере, с помощью виджета формы jQuery EasyUI:
<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;
}
});
}
Затем, когда пользователь просматривает свой компьютер для файла, я хочу отправить путь к запросу ajax jQuery для выполнения некоторых действий по загрузке. Проблема у меня в том, что filename
возвращает что-то вроде этого:
C:\fakepath\[name_of_file]
Из-за строки fakepath
я не получаю реальный путь к тому, где находится файл на компьютере пользователя. Кто-нибудь знает, как я могу решить эту проблему, пожалуйста?
спасибо
Пробовал этот плагин http://malsup.com/jquery/form/#getting-started
этот плагин предоставляет метод AjaxSubmit(), который отлично работает для загрузки изображения. Я использовал его в 2011 году.
у него есть некоторая проблема в IE (старая версия вроде 6,7). Вам нужно написать несколько хаков. на бэкэнд Firefox и IE загружают правильный формат потока файлов, например Data/Image
но в Chrome (Webkit) вы получите Octet Stream. Вам нужно проанализировать формат файла на сервере, чтобы проверить, что файл не является неправильным.
Я понятия не имею, что делает ваша функция 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;
});
});