Пример #1
0
    def _save(self, name, content, max_length=None):
        # 创建客户端的实例对象
        # client = Fdfs_client('utils/fastdfs/client.conf')
        # client = Fdfs_client(settings.FDFS_CLIENT_CONF)
        client = Fdfs_client(self.conf_path)
        # 上传图片
        # name 只是图片名字不是绝对路径
        # content内容, 图片的内容  我们需要read()方法读取图片的资源
        # read() 读取的图片时二进制
        data = content.read()
        # client.upload_by_filename() 需要知道文件的绝对路径
        # client.append_by_buffer() 上传图片二进制   会返回上传结果
        result = client.append_by_buffer(data)
        # {'Group name': 'group1',
        # 'Status': 'Upload successed.',
        # 'Local file name': '/home/python/Desktop/images/77.png',
        #  'Uploaded size': '56.00KB',
        # 'Remote file_id': 'group1/M00/00/00/wKjHgFvqw02AH5wBAADhzT61YcA573.png',
        #  'Storage IP': '192.168.199.128'}

        #  判断上传结果,获取file_id
        if result.get('Status') == 'Upload successed':
            # 上传成功
            file_id = result.get('Remote file_id')
            # 需要将file_id 返回给系统. 系统会使用file_id
            return file_id
        else:
            raise Exception('上传失败')
Пример #2
0
def upload(request):
    '''
>>> client.upload_by_buffer(buffer)
getting connection
<fdfs_client.connection.Connection object at 0x7f6147ae06d8>
<fdfs_client.fdfs_protol.Tracker_header object at 0x7f6147ae0748>
{'Storage IP': '10.10.10.2', 'Group name': 'group1', 'Local file name': '', 'Uploaded size': '11.00KB', 'Remote file_id': 'group1/M00/00/00/CgoKAlz2DNSAbdAEAAAsEIdFPmw7374261', 'Status': 'Upload successed.'}
>>> 
    '''
    if request.method == "POST":  #上传文件

        # 获取 http ip
        storage_conf = os.path.join(settings.CONF_DIR, 'storage.conf')
        conf_obj = configparser.ConfigParser()
        conf_obj.read(storage_conf, encoding="utf-8")
        ip = conf_obj.get('localhost', 'ip')

        #print(request.FILES)
        file_list = request.FILES.getlist("file")
        for file in file_list:
            print(type(file))

            # f = open(filename, 'wb')
            # for chunk in file.chunks():
            #     f.write(chunk)
            # f.close()

            client_conf = os.path.join(settings.CONF_DIR, 'client.conf')
            client = Fdfs_client(client_conf)
            file_ext = file.name.split(".")[-1]
            append_flag = False
            for chunk in file.chunks():
                if not append_flag:
                    result = client.upload_by_buffer(chunk,
                                                     file_ext_name=file_ext)
                    append_flag = True
                else:
                    client.append_by_buffer(chunk, result['Remote file_id'])

        return JsonResponse(result)