我在我的网站上使用ajax.我已成功使用jQuery.ajax()将文件异步上传到服务器.我正在使用Dajax和Dajaxice,因此我计划将这些应用程序用于文件上传.我试过
this例子.它工作正常.但是如果我将文件字段添加到我的html表单中,它就不会将文件发送到服务器.我的HTML表单看起来像
<form id="myform" action="/file/" method="post" enctype="multipart/form-data"> <div style='display:none'><input type='hidden' name='csrfmiddlewaretoken' value='AaSmyBEwQLSD3YghRAD9Cf2uxEjzESUe' /></div> <p><label for="id_docfile">Select a file</label> max. 42 megabytes</p> <p><input type="file" name="docfile" id="id_docfile" /></p> <p><input type="submit" value="Upload" /></p> </form>
这个问题已在很多地方被问到,但从未得到回答.
解决方法
Afaik目前在dajax / dajaxice中没有提供上传文件的规定.
我在一些项目中使用了dajax,并通过使用blueimp/jquery-file-upload和django视图来接受上传文件的POST并将JSON字符串返回给客户端.
这不是一个完美的解决方案,不仅仅是因为jquery-file-upload按钮的样式与普通的html表单元素不同,可以使用jQuery-ui来设置整个表单的样式,尽管这是一项额外的工作.
dwr对于Java来说都是dajax,tasty pie对于django来说都提供了文件上传,因此理论上应该可以实现它.
我很高兴发布我的ajax解决方案的样本,如果有人发现它们有用的话.