终于搞定了 django 的 ajax 方式上传图片

本文记录了使用 jQuery 的 AjaxFileUpload 插件在 Django 中实现 AJAX 图片上传的过程及遇到的问题。调试中遇到包括文件输入框 name 属性缺失等低级错误,并分享了解决方案。在客户端,通过动态创建 iframe 和 form 实现文件上传,而在服务器端,Django view 可通过 request.FILES.values()[0] 获取上传文件。目前尚存在的问题是多个上传表单的等待提示图标同步问题。
摘要由CSDN通过智能技术生成
今天终于搞定了 django 的 ajax 方式上传图片。

客户端我用的是 jQuery 的插件 AjaxFileUpload, 其原理是动态创建一个 iframe 和一个 form, 将 <input type="file" /> 控件的内容插入到 form 中,然后向那个 iframe 提交。当然这里 iframe 通过样式设置为不可见的了。

调试的过程中出现了很多低级错误,但因为 ajax 方式很难调试,花费了不少的时间才搞定,中间连 Visual Studio 2005 都用上了,用于调试 JavaScript. 下面把错误记录下来给自己以后提个醒:

1. fileElementId 注意不要在前面加上 '#', 否则会找不到控件(用 jQuery 时间久了很容易犯这个错误)。

2. <input type="file" /> 控件一定要加上 name 属性!因为这个没加表单将不会发送任何有效的文件数据。低级错误啊~

3. 其他需要在文件上传时同时发送的字段,可以考虑拼接成一个字符串,加到 url 里面用 get 的方式发送到服务器。当然,要记得字段内容用 encodeURIComponent 函数预先处理。

下面附上一点主要的客户端调用代码:
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值