Разрешает ли веб-браузер Android загружать только что сделанные фотографии с камеры? - PullRequest
29 голосов
/ 04 июля 2011

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

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

Ответы [ 5 ]

19 голосов
/ 06 мая 2013

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

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

Важная вещь -

capture = "camera"

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

10 голосов
/ 13 марта 2014

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

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

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

10 голосов
/ 04 июля 2011

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

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

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

1 голос
/ 20 сентября 2016

Да, начиная с Android 3.0, вы можете использовать камеру устройства через Device 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 в мобильных устройствах.

1 голос
/ 01 апреля 2012

Мне нужен более простой способ получить файлы с телефона, чем извлекать SD-карту, и я подумал, что программа CGI получит их на веб-сервере, поэтому у меня возник такой же вопрос. Я написал небольшой скрипт, который может успешно загружать файлы с удаленных компьютеров с помощью веб-браузера. Это выглядит так:

#!/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 вежливо позволил мне это ввести. Затем, когда я нажал кнопку выбора файла, он вызвал меню, позволяющее мне выбрать из Галереи, музыкального приложения, диктофона и файлового менеджера, который я установил. Я выбрал файл из галереи и, хотя это заняло приятное время, он загрузился нормально. Таким образом, ответ на вопрос для меня был «да». А для вас - опробуйте тестовую программу, подобную той, которая была опубликована.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...