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('上传失败')
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)