<html>
<head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script>
$(function() {
$('#filess').change(function() {
if(window.FileReader) {
var im = new Image(), r = new FileReader(), f = this.files[0], type = f.type;
r.onload = function(e) {
im.onload = function() {
alert('Type: '+type+'\n'+'Width: '+this.width+'\n'+'Height: '+this.height)
}
im.src = e.target.result;
}
r.readAsDataURL(f)
} else {
//сорри, только через сервер
}
})
});
</script>
</head>
<body>
<form id="ka">
<input type="file" id="filess" name="files"/>
<input type="submit" value="Send"/>
</form>
</body>
</html>
Вам нужно отправлять один файл, а значит name="files", иначе при name="files[]" лишь усложниться структура массива принятых файлов. <button type="submit"> - такого быть не может, или input type="submit" или button. PS. Причина в безопасности - для того чтобы использовать свойство value, изображение должно быть в том же каталоге что и скрипт, что в случае веб-страницы нельзя реализовать. В IE можно добавить сайт в доверенные, тоже будет доступно. Сейчас попробую по иному, если не получится, то нужно нужно будет использовать, например, FileReader. |
Стоп! Но разве скрипт не должен получить доступ к указаному пользователе файлу? Хотя для такого случая можно пойти на крайность(для меня это так) и воспользоваться AJAX но как то не очень хочется это делать.
|
Скрипт то получает доступ к файлу, но не раскрывает путь, по которому он получен на машине клиента. Это относится к вопросу по безопасности, и никакой Ajax в этом не поможет. Уж не помню точно, но Ослика точно можно заставить раскрыть этот путь добавив сайт в доверенные. В других браузерах не проверял, не знаю.
В общем не получится "обдурить" браузер, по крайней мере у меня не получилось. Остается только FileReader использовать, код исправлен под него. |
Ладно спасибо. Я понял что это, ну по крайней в мере в большей части глупая затея. Тема закрыта.
|
Затея чего, узнать разрешение изображения на клиенте? Чем же она глупая? В старых браузерах это только на сервере корректно можно получить, что впрочем все равно придется на нем делать, если вам необходимо контролировать разрешение.
|
Я просто хотел изначально проверять размер загружаемого изображения.
|
размер, это сколько вести файл, а разрешение, это ширина на высоту. Если размер, то FileReader не нужен, это можно узнать как files[0].size.
|
Не правильны выразился "Разрешение". И да почему вы говрите что AJAX не поможет? Можноже отправить картинку на сервер а потом просто получить с него всю информацию о данном файле. Разве нет?
|
Цитата:
А чем? Тут уж не разрешение надо возвращать, а ошибку в случае если оно не удовлетворяет требованию, то есть это уже проверка на сервере перед загрузкой файлов, а не забава ради информации. :) Об это я говорил ранее. Если ошибок нет, перемещаем файл в каталог и возвращаем "Ок". Между прочим, заставлять пользователя загружать картинку под аватарку строго W x H, это вчерашний день - сервер спокойно может уменьшить изображение, вырезать пропорционально и никаких проблем. А ограничения можно на тип файла (не картинка, или не разрешать gif-анимацию, если больше размера аватарки и нечем на сервер работать с такой анимацией), размер файла не позволит уменьшить его (памяти не хватит), и т.п. |
Я к стаи что то малость не понял что падете вот тут r.onload = function(e) в е и обясните это e.target.result и это r.readAsDataURL(f) а то что то я малость не доконца понимаю эти строчки.
|
| Часовой пояс GMT +3, время: 16:48. |