获取'字符串到 Django forms.FileField()

Posted

技术标签:

【中文标题】获取\'字符串到 Django forms.FileField()【英文标题】:Get 'str' into Djano forms.FileField()获取'字符串到 Django forms.FileField() 【发布时间】:2021-12-19 05:37:27 【问题描述】:

我正在上传没有表单。 如果我通过<input type...> 上传,我的用户有一个 FileField,我没有问题。 但这对我的目的来说不是那么方便。

views.py

    def uploadaction2(request):
        f = forms.FileField() # this is my idea
        data = json.loads(request.body)
        # f.clean("data['data']") # error: file_name = data.name AttributeError: 'str' object has no attribute 'name'
        logger.error(type(data['data'])) #gives <class 'str'> and without the type the string that i want to save
        with open('newfile', 'w') as file:
            file.write(data['data'])
        request.user.file = file 
        request.user.save() # i get no error until this part

错误

Internal Server Error: ....  in pre_save
    if file and not file._committed:
AttributeError: '_io.TextIOWrapper' object has no attribute '_committed'

我想我必须将 json 字符串转换为 forms.FileField(),因为我不知道该怎么做。

【问题讨论】:

【参考方案1】:
    def uploadaction2(request):
        file = request.FILES.get('file') # set name to input
        request.user.file = file
        request.user.save()

【讨论】:

logger.error(request.FILES.get('file')) -> 返回无。因为我发送的不是文件,而是一个字符串,而这个字符串到达​​了我的后端。 只需将相对文件路径字符串设置为用户的文件字段。

以上是关于获取'字符串到 Django forms.FileField()的主要内容,如果未能解决你的问题,请参考以下文章

Xamarin.Forms - 打开对话框以搜索文件的最佳方式

如何从名称空间的 Django URL 中获取绝对字符串?

Django通过ajax获取请求发出两个请求

Python 字符串到 Django 时区(知道日期时间)

将字符串列表从 Django 传递到 Javascript

django rest框架:在视图中获取url路径变量