Подтвердить что ты не робот

Предоставляет ли веб-браузер Android возможность загружать фотографии, только что снятые с камеры?

Одним из важнейших требований в приложении, которое я пишу, является то, что пользователь может загрузить (input type="file") фотографию из формы.

Поддерживает ли веб-браузер андроида загрузку файлов? Если да, то поддерживают ли все версии 1.5+?

4b9b3361

Ответ 1

Да и нет. У некоторых людей, похоже, есть проблемы (как указано в комментариях). Хотя он работал на всех моих устройствах, он вполне возможно, что другой браузер может вообще не реализовать эту функцию.

Пользователь может, однако, не загружать файлы на SD-карту, а аудио-, видео- и графические файлы, которые находятся во внутреннем/внешнем хранилище. Тип файлов, которые вы можете загрузить, зависит от на установленных приложениях. Если у вас установлен диспетчер файлов (или поставляется с ОС), вы также можете использовать его для загрузки любого файла, который вы хотите (Галерея и Медиаплеер всегда должны присутствовать).

Когда нажата кнопка загрузки <input type="file">, браузеры, похоже, отправляют Intent.ACTION_GET_CONTENT -Intent, поэтому каждое приложение прослушивает это возможный источник файлов.

Ответ 2

Вы можете использовать это:

<input type="file" name="photo" accept="image/*" capture="camera">

Важно

= захват "камера"

EDIT: в соответствии с последним захватом spec является логическим атрибутом

Ответ 3

Правильный формат ввода HTML-кода устройства API:

<input type="file" name="photo" accept="image/*;capture=camera"></input>

Это поддерживается устройствами с Android 3.0 (для планшетов) или Android 4.0 и более поздними версиями (для телефонов). Я понятия не имею, какая версия iOS начинает поддерживать это.

Ответ 4

Мне нужен более простой способ получить файлы со своего телефона, а не вытащить 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('"','&quot;')
            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, который я установил. Я выбрал файл из галереи, и, хотя это заняло приятное время, он загрузился хорошо. Поэтому ответ на вопрос для меня был "да". И для вас - попробуйте тестовую программу, такую ​​как опубликованная.

Ответ 5

Да, с 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 на мобильных устройствах.