1

ビデオを関連するタイトル、説明などとともに Google App Engine Blobstore にアップロードする JQuery Mobile ページを作成しようとしています。

フォームの HTML は次のとおりです。

<form class="form-horizontal" action="{{ upload_url }}" method="POST" enctype="multipart/form-data" data-ajax="false">
  <input type="text" name="title" placeholder="Title" id="basic" value="" data-ajax="false" />
  <input type="text" name="description" placeholder="Description" id="basic" value="" data-ajax="false" />
  <input type="file" data-ajax="false" name="file" id="file">
  <input type="submit" value="Submit" name="sumbit" data-theme="b" data-ajax="false">
</form>

HTML は、このコードを使用して Google App Engine で生成されます。

class MobileUploadPage(webapp2.RequestHandler):
  def get(self):
    upload_url = blobstore.create_upload_url('/uploadvideo')
    template_values = {
      'upload_url': upload_url,
    }

    template = JINJA_ENVIRONMENT.get_template('mobileUpload.html')
    self.response.write(template.render(template_values)) 

フォームのアクションとして表示されるアップロード URL は、次のハンドラーを使用してブロブストアによって生成されます。

class UploadHandler(blobstore_handlers.BlobstoreUploadHandler):
  def post(self):
  upload = self.get_uploads()[0]
  video = Videos(content=upload.key())
  video.title = self.request.get('title')
  video.description = self.request.get('description')
  video.ratingDown = 0
  video.ratingUp = 0
  video.creator = users.get_current_user().nickname()
  uniuqeIDFound = False
  newID = random.randint(1000,9999)
  while(uniuqeIDFound == False):
    vids = db.GqlQuery("SELECT * "
                       "FROM Videos ")

    uniuqeIDFound = True
    for v in vids:
      if (v.videoID == newID):
        newID = random.randint(1,10000)
        uniuqeIDFound = False
  video.videoID = newID
  db.put(video)
  self.redirect('/home')

アップロード URL が適切に生成され、ページに表示されます。当サイトのブラウザ版では、完全に動作します。ただし、この JQM モバイル ページを介して iPhone からビデオをブロブストアにアップロードしようとすると、フォームが送信されません。

JQM のドキュメントでは、ファイルを使用したマルチパート フォーム入力は AJAX では機能しないため、親フォームに data-ajax=false タグを追加する必要があると記載されています。私はそれをしましたが、役に立たないようです。

誰でも理由がわかりますか?

4

1 に答える 1

0

やってみました:

$.mobile.ajaxEnabled = false;

また

$.mobile.ajaxFormsEnabled = false;

また、特定のファイル アップロード プラグインを確認することもできます。

http://www.plupload.com/example_queuewidget.php

また

https://github.com/filamentgroup/jQuery-Custom-File-Input

于 2013-05-14T23:09:27.503 に答える