问题描述
我正在尝试使用将文件上传(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 (将#修改为@)