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