Jquery 如何使用ajax上传url并仍然获得blobstore识别的文件上传 类PhotoUploadFormHandler(webapp2.RequestHandler): def get(自我): #上传url=blobstore。创建上传url(“/upload\u photo”) #方法必须为“POST”,且enctype必须设置为“多部分/表单数据”。 自我。回应。输出。写入(“”) 名称: 上传文件: //$(“#提交按钮”).submit(函数(){ $(“#提交按钮”).live(“单击”,函数(){ 控制台日志(“提交按钮”); //$('#上传文件')。提交(); $('#create_upload_url')。加载('/create_upload_url',函数(){ var create_upload_url=$(“#create_upload_url”).text(); $('imgform').attr('action',create\u upload\u url); //我们序列化post表单,这将获取表单中的所有post值。 var info=$(this).closest('form').serialize(); 控制台日志(信息); 日志(创建上传url); $.post(创建\上传\ url、信息、函数(数据){ //现在,我们将输出弹出到#output DIV中。 $(“#输出”).html(数据); }); log('已执行加载')+create\u upload\u url);返回true; }); }); ''')
我从一个上传url来自应用程序的工作表单开始 但是,后退按钮有问题 然后,我尝试使用ajax动态获取url,如上所述 虽然我得到了典型的url并重定向,但是get_uploads函数现在返回0 这是正确的方法吗?问题就在这里Jquery 如何使用ajax上传url并仍然获得blobstore识别的文件上传 类PhotoUploadFormHandler(webapp2.RequestHandler): def get(自我): #上传url=blobstore。创建上传url(“/upload\u photo”) #方法必须为“POST”,且enctype必须设置为“多部分/表单数据”。 自我。回应。输出。写入(“”) 名称: 上传文件: //$(“#提交按钮”).submit(函数(){ $(“#提交按钮”).live(“单击”,函数(){ 控制台日志(“提交按钮”); //$('#上传文件')。提交(); $('#create_upload_url')。加载('/create_upload_url',函数(){ var create_upload_url=$(“#create_upload_url”).text(); $('imgform').attr('action',create\u upload\u url); //我们序列化post表单,这将获取表单中的所有post值。 var info=$(this).closest('form').serialize(); 控制台日志(信息); 日志(创建上传url); $.post(创建\上传\ url、信息、函数(数据){ //现在,我们将输出弹出到#output DIV中。 $(“#输出”).html(数据); }); log('已执行加载')+create\u upload\u url);返回true; }); }); '''),jquery,ajax,google-app-engine,blobstore,Jquery,Ajax,Google App Engine,Blobstore,我从一个上传url来自应用程序的工作表单开始 但是,后退按钮有问题 然后,我尝试使用ajax动态获取url,如上所述 虽然我得到了典型的url并重定向,但是get_uploads函数现在返回0 这是正确的方法吗?问题就在这里 class PhotoUploadFormHandler(webapp2.RequestHandler): def get(self): # upload_url = blobstore.create_upload_url('/upload_photo
class PhotoUploadFormHandler(webapp2.RequestHandler):
def get(self):
# upload_url = blobstore.create_upload_url('/upload_photo')
# The method must be "POST" and enctype must be set to "multipart/form-data".
self.response.out.write('''<html><body>
<form id="imgform" action="none" method="POST" enctype="multipart/form-data">
Name: <input type="text" name="name"/ value="{{ user.name }}" > <br/>
Upload File : <input type="file" name="file1"><br>
<h7 id="create_upload_url">
</h7>
<input type="button" id="submitbutton" value="Submit">
</form>
<div id="output"></div>
</body>
<script type="text/javascript" src="js/zepto.js" > </script>
<script type="text/javascript">
// $('#submitbutton').submit( function(){
$('#submitbutton').live("click",function(){
console.log("submitbutton");
// $('#upload_file').submit();
$('#create_upload_url').load('/create_upload_url', function() {
var create_upload_url=$('#create_upload_url').text();
$('#imgform').attr('action', create_upload_url);
// We serialize the post form, this grabs all the post values in the form.
var info = $(this).closest('form').serialize();
console.log(info);
console.log(create_upload_url);
$.post(create_upload_url, info, function(data) {
// We now pop the output inside the #output DIV.
$("#output").html(data);
});
console.log('Load was performed.'+ create_upload_url );return true;
});
});
</script>
</html>
''')
这会序列化表单数据,但不包括文件,因此您可以成功提交表单,但不上载文件
通常你需要发布一个表单提交来上传一个文件。你不能用一个简单的AJAX帖子来完成
有一些解决办法,包括创建一个单独的iframe并为iframe发布表单submit,这样您的主框架就不会更新。如果您使用谷歌“jquery ajax文件上传”,有多种解决方案
以下是一个简单的教程:
var info = $(this).closest('form').serialize();