\u0000 无法在 django/postgreSQl 中转换为文本

问题描述 投票:0回答:1

我在主机上有一个 django 项目,当我想上传图像时,有时会发生错误(特定图像有问题)!下面显示了我如何调整上传图像的大小:

def save_files_to_media(request, is_public=False, klass=None, conversation=None):
    from apps.file.models import File
    fs = FileSystemStorage()

    file_items = {}
    for data_item in request.data:
        file_match = re.search('^fileToUpload\[(\d+)\]$', data_item)
        if file_match and file_match.groups():
            item_index = file_match.groups()[0]

            if item_index not in file_items:
                file_items[item_index] = {}

            file_items[item_index]['file_to_upload'] = request.data[data_item]
        else:
            optimize_match = re.search('^optimizeType\[(\d+)\]$', data_item)
            if optimize_match and optimize_match.groups():
                item_index = optimize_match.groups()[0]

                if item_index not in file_items:
                    file_items[item_index] = {}

                file_items[item_index]['optimize_type'] = request.data[data_item]

    files = []
    for file_item_key in file_items:
        input_file = file_items[file_item_key]['file_to_upload']
        # TODO: checking validation. if input_file.name is not exist

        optimize_type = file_items[file_item_key].get('optimize_type')

        file_uuid = str(uuid4())
        if is_public:
            orig_filename, file_ext = splitext(basename(input_file.name))
            directory_name = join(settings.MEDIA_ROOT, file_uuid)
            filename = file_uuid + file_ext
        else:
            directory_name = join(settings.MEDIA_ROOT, file_uuid)
            mkdir(directory_name)
            filename = input_file.name

        filepath = join(directory_name, filename)
        fs.save(filepath, input_file)

        is_optimized = False
        if optimize_type == 'image':
            is_success, filepath = image_optimizer(filepath)
            filename = basename(filepath)
            is_optimized = is_success

        file_obj = File(
            orig_name=filename,
            uuid=file_uuid,
            md5sum=get_md5sum(filepath),
            filesize=get_filesize(filepath),
            meta=get_meta_info(filepath),
            is_optimized=is_optimized,
            creator=request.user
        )
        if is_public:
            file_obj.is_public = True
        else:
            file_obj.klass = klass
            file_obj.conversation = conversation

        file_obj.save()
        files.append(file_obj)
    return files

这是我在处理某些图像时遇到的错误:

unsupported Unicode escape sequence
LINE 1: ..., 'ada90ead20f7994837dced344266cc51', 145216, '', '{"FileTyp...
                                                             ^
DETAIL:  \u0000 cannot be converted to text.
CONTEXT:  JSON data, line 1: ...ecTimeDigitized": 506779, "MakerNoteUnknownText":

有趣的是,在我的本地,而不是在主机。有关更多信息,我必须告诉你们我的 postgreSQL 版本是

11.3
,主机 postgreSQl 是
9.5.17
。您认为问题出在哪里?这似乎是 postgreSQL 的错误。谢谢你

django postgresql
1个回答
0
投票

我来到这里是因为我在文本和 json 字段中都收到此错误。

'\u0000'
是 Unicode 中的空字符,将
'\u0000'
替换为
''
解决了文本和 json 字段的问题。

value = value.replace('\u0000', '')
© www.soinside.com 2019 - 2024. All rights reserved.