python django 下载多个文件,接收多个文件

一、首先是通过api接收前端上传的多个文件

def receive_resume_appendix(request):
    """
    接收简历附件
    """
    if request.method == 'POST':
        files = request.FILES.getlist('files')
        for f in files:
            destination = open('%s/%s' % (user_dir, f.name), 'wb')
            for chunk in f.chunks():
                destination.write(chunk)
            destination.close()
        return base.made_response(base.on_success({}))
    return base.made_response(base.on_failed(conf.ERROR_POST))

二、下载,回传文件

def download_resume_appendix(request):
    """
    下载附件
    """
    if request.method == 'POST':
        #判断文件存不存在
        user_file = '%s/%s_%s/%s' % (conf.APPENDIX_FILE_PATH, userName,
                                     phoneNumber, fileName)
        if not os.path.exists(user_file):
            return base.made_response(base.on_failed(conf.ERROR_WORK))
        file_content = open(user_file, 'rb')
        #告诉response返回的是文件
        response = HttpResponse(file_content)
        response['Content-Type'] = 'application/octet-stream'
        response['Content-Disposition'] = 'attachment;filename="api.pdf"'
        return response
    return base.made_response(base.on_failed(conf.ERROR_POST))

 

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
首先,需要在QT程序中使用QtNetwork模块来发送HTTP请求。可以使用QNetworkAccessManager类来创建一个网络请求管理器,然后使用QNetworkRequest类创建一个HTTP请求对象,设置请求的URL和请求头等信息。接着,可以通过QHttpMultiPart类创建一个多部分HTTP请求,用于上传多个文件和JSON数据。 下面是一个示例代码,用于上传多个文件和JSON数据到Django后端: ```cpp QNetworkAccessManager *manager = new QNetworkAccessManager(this); // 创建HTTP请求对象 QNetworkRequest request(QUrl("http://localhost:8000/api/upload/")); request.setHeader(QNetworkRequest::ContentTypeHeader, "multipart/form-data"); // 创建多部分HTTP请求 QHttpMultiPart *multiPart = new QHttpMultiPart(QHttpMultiPart::FormDataType); // 添加文件上传部分 QHttpPart filePart; filePart.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"file\"; filename=\"file1.txt\"")); QFile *file1 = new QFile("file1.txt"); file1->open(QIODevice::ReadOnly); filePart.setBodyDevice(file1); file1->setParent(multiPart); multiPart->append(filePart); // 添加JSON数据上传部分 QHttpPart jsonPart; jsonPart.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"json\"")); jsonPart.setBody("{\"name\": \"John\", \"age\": 30}".toUtf8()); multiPart->append(jsonPart); // 发送HTTP请求 QNetworkReply *reply = manager->post(request, multiPart); multiPart->setParent(reply); // 接收HTTP响应 connect(reply, &QNetworkReply::finished, this, [=]() { if (reply->error() == QNetworkReply::NoError) { qDebug() << "Upload success"; } else { qDebug() << "Upload failed:" << reply->errorString(); } reply->deleteLater(); }); ``` 在Django后端,可以使用django-rest-framework和django-cors-headers等库来处理文件上传和跨域请求。可以在views.py中编写一个视图函数,接收上传的文件和JSON数据,然后进行相关处理,最终返回HTTP响应。 ```python from rest_framework.decorators import api_view from rest_framework.response import Response from django.views.decorators.csrf import csrf_exempt from django.views.decorators.http import require_POST from django.core.files.storage import FileSystemStorage @api_view(['POST']) @csrf_exempt @require_POST def upload(request): file = request.FILES.get('file') json_data = request.data.get('json') if file and json_data: # 保存上传的文件 fs = FileSystemStorage() filename = fs.save(file.name, file) # 处理JSON数据 # ... return Response({'status': 'success'}) else: return Response({'status': 'failed'}) ``` 需要注意的是,文件上传时需要设置正确的Content-Type和Content-Disposition头,JSON数据上传时需要将数据编码为字节数组并设置正确的Content-Disposition头。同时,还需要注意跨域请求的处理,可以使用django-cors-headers库来简化处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值