在Django中上传和下载xlsx文件

问题描述

我正在尝试使用将文件上传(xlsx)到s3的视图。还有一个芹菜功能,应该下载此文件,以便我可以执行一些操作。

我的观点:

class ImportView(APIView):
    parser_classes = (FileUploadParser,)

    def post(self,request,filename):
        imported = ImportSerializer(data=request.data)
        fs = FileSystemStorage(tempfile.gettempdir())
        file_name = fs.save(content=new_colabs.validated_data["file"],name="import.xlsx")
        full_path = os.path.join(fs.location,file_name)
        object_name = file_name
        s3 = boto3.client("s3")
        s3.upload_file(full_path,"my_bucket",file_name)
        # call celery here...
        return Response(status=status.HTTP_200_OK)

我的芹菜任务

def example_download_funciont(self):
    s3 = boto3.client("s3")
    bucket = s3.Bucket("my_bucket")
    with open(file_name,'wb') as data:
        file = bucket.download_fileobj(object_name,data)
    workbook = load_workbook(file)
    # [...]

运行此代码,我可以将其上传到s3。但是,当我尝试直接通过aws控制台访问它时,出现此错误

AccessDeniedAccess DeniedAEEF2C5140AF4B82zNYFYcwehn+ZDxm+FuEI8mqrcCCU6BQzDdjd6mzOseMDanA6cPmu2VnbX3KvR978xN9v0QwOa7g=try { Object.defineProperty(screen,"availTop",{ value: 0 }); } catch (e) {} try { Object.defineProperty(screen,"availLeft","availWidth",{ value: 2560 }); } catch (e) {} try { Object.defineProperty(screen,"availHeight",{ value: 1080 }); } catch (e) {} try { Object.defineProperty(screen,"colorDepth",{ value: 24 }); } catch (e) {} try { Object.defineProperty(screen,"pixelDepth",{ value: 24 }); } catch (e) {} try { Object.defineProperty(navigator,"hardwareConcurrency",{ value: 8 }); } catch (e) {} try { Object.defineProperty(navigator,"appVersion",{ value: "5.0 (X11)" }); } catch (e) {} try { Object.defineProperty(navigator,"doNottrack",{ value: "unspecified" }); } catch (e) {} try { window.screenY = 0 } catch (e) { } try { window.screenTop = 0 } catch (e) { } try { window.top.window.outerHeight = 1051 } catch (e) { } try { window.screenX = 395 } catch (e) { } try { window.screenLeft = 395 } catch (e) { } try { window.top.window.outerWidth = 1856 } catch (e) { } 

在celery任务中,我无法下载文件。当我打电话给file时,我得到 None

有人可以指出我的向导吗?我在botocore文档中看到了它,但没有成功。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)