1. Django系列之Django与ajax上传文件

html代码如下:

<div class="form-group">
                <label for="exampleInputFile">附件上传</label>
                 <input  type="file" name="file" id="file_upload">
                 <button  type="button" class="btn btn-default" onclick="FileUpload()">开始上传附件</button>
            </div>

jqeury代码如下:

        //   上传附件到方法
        function FileUpload() {
            var form_data = new FormData();
            var file_info = $('#file_upload')[0].files[0];
            form_data.append('file',file_info);
            //if(file_info==undefined)暂且不许要判断是否有附件
                //alert('你没有选择任何文件');
                //return false
            //}

            // 提交ajax的请求
            $.ajax({
                url:"{% url 'post_apply_data' %}",
                type:'POST',
                data: form_data,
                processData: false,  // tell jquery not to process the data
                contentType: false, // tell jquery not to set contentType
                success: function(callback) {

                    console.log(order_id)
                }
            }); // end ajax
        }

django-view代码如下:

def handle_upload(request):
    file_obj = request.FILES.get('file')
    if file_obj:   # 处理附件上传到方法
        request_set = {}
        print('file--obj', file_obj)
        #user_home_dir = "upload/%s" % (request.user.userprofile.id)
        accessory_dir = settings.accessory_dir
        if not os.path.isdir(accessory_dir):
            os.mkdir(accessory_dir)
        upload_file = "%s/%s" % (accessory_dir, file_obj.name)
        recv_size = 0
        with open(upload_file, 'wb') as new_file:
            for chunk in file_obj.chunks():
                new_file.write(chunk)
        order_id = time.strftime("%Y%m%d%H%M%S",time.localtime())
        cache.set(order_id,upload_file)
        return HttpResponse(order_id)

至此,我们可以通过ajax正常上传文件了。

posted @   温柔易淡  阅读(4897)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示