#javascript #ajax #mootools
#javascript #ajax #mootools
Вопрос:
Я использую запрос mootools для отправки данных изображения на сервер для импорта изображений. Мой вопрос в том, как определить, является ли путь к изображению допустимым до завершения запроса?
Вот что у меня есть сейчас—
function doUpload(){
var remoteFile = document.id('uploadRemote').get('value');
var imageRequest = new Request({
url:'index.php',
method: 'post',
data: 'path=' remoteFile,
onRequest: function() {
console.log(remoteFile);
var myimage = Asset.image(remoteFile,
{
//onError: imageRequest.cancel() // <-- this doesn't work either
onError: this.cancel()
}
);
},
onSuccess: function(response) {
alert(response);
}
}).send();
}
document.id('submit').addEvent('click', function(){
doUpload();
});
Я пытаюсь использовать Asset.image, чтобы проверить, действительно ли путь является изображением, а затем, если это не так, отменить запрос. Однако это не работает.
Любые подсказки о том, что я делаю неправильно? Спасибо!
Ответ №1:
Вы не можете получить путь к выбранному файлу из <input type="file" />
. Таким образом, вы не сможете загрузить его перед загрузкой. Лучшее, что вы можете сделать, это проверить расширение файла.
Редактировать: возможно, проблема в этой строке:
onError: this.cancel()
Это должно быть:
onError: function () {
imageRequest.cancel();
}
Комментарии:
1. это не загрузка файла — это просто путь. Идея заключается в том, что люди могут добавлять удаленную ссылку на размещенное изображение на своем сервере (горячую ссылку, если хотите), и после проверки того, что это изображение и оно доступно, оно будет вставлено в таблицу изображений.
2. из скрипки — <тип ввода =»текст» идентификатор =»uploadRemote» значение =»»>
3. @julio —
onError
ожидает функцию, но вы присваиваете ей результат вызова функции. См. Редактирование моего ответа.4. @gilly3— спасибо! Тем не менее, использование функции по-прежнему дает
Uncaught TypeError: Cannot call method 'cancel' of undefined
.5. @julio вы можете сделать запрос head к удаленному изображению с php или другого языка на стороне сервера и проверить его mime-тип. Другим подходом было бы прочитать первые x байтов файла и проверить, является ли это изображением или нет. изображения в формате jpeg, gif, png имеют отдельный заголовок — это самый безопасный способ сделать это