Одним из важнейших требований в приложении, которое я пишу, является то, что пользователь может загрузить (input type="file") фотографию из формы.
Поддерживает ли веб-браузер андроида загрузку файлов? Если да, то поддерживают ли все версии 1.5+?
Одним из важнейших требований в приложении, которое я пишу, является то, что пользователь может загрузить (input type="file") фотографию из формы.
Поддерживает ли веб-браузер андроида загрузку файлов? Если да, то поддерживают ли все версии 1.5+?
Да и нет. У некоторых людей, похоже, есть проблемы (как указано в комментариях). Хотя он работал на всех моих устройствах, он вполне возможно, что другой браузер может вообще не реализовать эту функцию.
Пользователь может, однако, не загружать файлы на SD-карту, а аудио-, видео- и графические файлы, которые находятся во внутреннем/внешнем хранилище. Тип файлов, которые вы можете загрузить, зависит от на установленных приложениях. Если у вас установлен диспетчер файлов (или поставляется с ОС), вы также можете использовать его для загрузки любого файла, который вы хотите (Галерея и Медиаплеер всегда должны присутствовать).
Когда нажата кнопка загрузки <input type="file">
, браузеры, похоже, отправляют Intent.ACTION_GET_CONTENT
-Intent, поэтому каждое приложение прослушивает это возможный источник файлов.
Вы можете использовать это:
<input type="file" name="photo" accept="image/*" capture="camera">
Важно
= захват "камера"
EDIT: в соответствии с последним захватом spec является логическим атрибутом
Правильный формат ввода HTML-кода устройства API:
<input type="file" name="photo" accept="image/*;capture=camera"></input>
Это поддерживается устройствами с Android 3.0 (для планшетов) или Android 4.0 и более поздними версиями (для телефонов). Я понятия не имею, какая версия iOS начинает поддерживать это.
Мне нужен более простой способ получить файлы со своего телефона, а не вытащить SD-карту, и я подумал, что программа CGI получит их на веб-сервере, поэтому у меня был тот же вопрос. Я написал небольшой script, который может успешно загружать файлы с удаленных компьютеров с помощью веб-браузера. Это выглядит так:
#!/usr/bin/python
import os
import cgi
def tag(tag, contents=None, attlist=None):
tagstring= "<"+tag
if attlist:
for A in attlist:
V= attlist[A].replace('"','"')
attstring= ' '+A+'="'+V+'"'
tagstring += attstring
if contents:
tagstring += ">\n"+contents.rstrip()+"\n</"+tag+">\n"
else:
tagstring += "/>\n"
return tagstring
content_type= 'Content-type: text/html\n\n'
form = cgi.FieldStorage()
if not form:
acturl= "./up.py"
ff= tag('input','',{'type':'file','name':'filename'}) + tag('input',''{'type':'submit'})
f= tag('form',ff, {'action':acturl, 'method':'POST', 'enctype':'multipart/form-data'})
H= tag('head', tag('title', "Uploader"))
B= tag('body', tag('p', f))
print content_type + tag('html', H + B)
elif form.has_key("filename"):
item = form["filename"]
if item.file:
data = item.file.read()
t= os.path.basename(item.filename)
FILE= open("/home/user/public_html/uploads/"+t,'w')
FILE.write(data)
FILE.close
msg= "Success! "
else:
msg= "Fail. "
H= tag('head', tag('title', "Uploader"))
B= tag('body', tag('p', msg + tag('a','Another?',{'href':'./up.py'})))
print content_type + tag('html', H + B)
Запуск теста с такой программой - единственный верный способ узнать, делает ли ваш бренд браузера телефона то, что вы хотите, но для меня: он сработал. Я даже мог использовать Apache mod_auth, чтобы требовать имя пользователя и пароль, и браузер Android вежливо позволил мне ввести его. Затем, когда я выбрал кнопку выбора файла, он предложил меню, позволяющее мне выбирать из галереи, музыки ap, звукозаписывающего устройства и файлового менеджера ap, который я установил. Я выбрал файл из галереи, и, хотя это заняло приятное время, он загрузился хорошо. Поэтому ответ на вопрос для меня был "да". И для вас - попробуйте тестовую программу, такую как опубликованная.
Да, с Android 3.0 вы можете использовать камеру устройства через API-интерфейс устройства. Этот фрагмент взят из там
<form enctype="multipart/form-data" method="post">
<h2>Regular file upload</h2>
<input type="file"></input>
<h2>capture=camera</h2>
<input type="file" accept="image/*;capture=camera"></input>
<h2>capture=camcorder</h2>
<input type="file" accept="video/*;capture=camcorder"></input>
<h2>capture=microphone</h2>
<input type="file" accept="audio/*;capture=microphone"></input>
</form>
Этот источник выглядит интересным, когда дело касается проверки поддержки html5 на мобильных устройствах.