在我的web2py应用程序中,我需要在上传之前处理<input type="file" />
字段中的文件名。此处理将使用正则表达式分析文件名,并在允许用户提交表单之前填写其他表单字段。
我的第一步是获取文件名以便处理它。直到现在,我没能得到它。根据我对web2py文档的解释,我发现ajax()
函数应该可以解决问题。
这是我的代码块。 视图:
<form>File to upload:
<input name="zefilename" type="file" onchange="ajax('{{=URL('default', 'analyse_version_data')}}', ['zefilename'], 'target')"/>
<!-- Other fields go here -->
<div id="target"></div>
</form>
控制器:
def analyse_version_data():
filename = request.vars.zefilename
return P(filename)
如果我的输入类型不是type="file"
,那么它就像魅力一样,输入值显示在目标div
中。
但如果type="file"
存在,我就无法得到任何东西。 request.vars
保持空白:<Storage {'_vars': <Storage {}>,...
我可能遗漏了一些东西,但我无法弄清楚是什么......
感谢您的帮助。
答案 0 :(得分:1)
您的代码正在尝试通过Ajax发送整个文件,而不仅仅是发送文件名。要仅发送文件名,请不要使用ajax()
函数的第二个参数,而是将文件名添加到Ajax URL的查询字符串中:
<form>File to upload:
<input name="zefilename" type="file"
onchange='ajax("{{=URL('default', 'analyze_version_data')}}?filename=" +
encodeURIComponent(jQuery(this).val()), [], "target");' />
<!-- Other fields go here -->
<div id="target"></div>
</form>
控制器:
def analyse_version_data():
return P(request.vars.filename)