def _save(self,name,content): '''保存文件时使用''' # name:你选择的上传文件的名字 # content:File对象 # 创建一个fdfs_client对象 client=Fdfs_client(self.client_conf) # 上传文件-》fdfs res = client.upload_appender_by_buffer(content.read()) # dict # { # 'Group name': group_name, # 'Remote file_id': remote_file_id, # 'Status': 'Upload successed.', # 'Local file name': '', # 'Uploaded size': upload_size, # 'Storage IP': storage_ip # } if res.get('Status')!='Upload successed.': # 上传失败 raise Exception('文件上传失败') # 获取返回的文件ID filename = res.get('Remote file_id') return filename
def save(self, name, content, max_length=None): """保存文件时使用""" #name 你选择上传文件的名字 #content 包含你上传文件内容的file对象 #创建一个fdfs_client对象 client = Fdfs_client( '/home/scb/Desktop/dailyfresh/daily_fresh/utils/fdfs/client.conf') #上传文件到fast_dfs系统中 res = client.upload_appender_by_buffer(content.read()) """ res 返回的是一个字典 dict { 'Group name' : group_name, 'Remote file_id' : remote_file_id, 'Status' : 'Upload successed.', 'Local file name' : '', 'Uploaded size' : upload_size, 'Storage IP' : storage_ip } if success else None """ if res.get('Status') != 'Upload successed.': #上传失败 raise Exception('上传文件到fast——dfs失败') #获取返回的文件id filename = res.get('Remote file_id') return filename
def _save(self, name, content): """保存文件时使用""" # name:上传文件的名字 # content:包含上传文件内容的file对象 # 创建一个Fdfs_client对象 client = Fdfs_client("./utils/fdfs/client.conf") res = client.upload_appender_by_buffer(content.read()) ''' @return dict { 'Group name' : group_name, 'Remote file_id' : remote_file_id, 'Status' : 'Upload successed.', 'Local file name' : '', 'Uploaded size' : upload_size, 'Storage IP' : storage_ip } if success else None ''' if res.get('Status') != 'Upload successed.': # 上传失败 raise Exception('上传文件到fastdfs失败') # 获取返回的文件ID filename = res.get('Remote file_id') return filename
def _save(self, name, content): """存储文件时使用""" # name :上传文件名 # content: 包含上传文件内容的File对象-----读取文件内容 # 创建一个Fast dfs 对象 client = Fdfs_client('./utils/fdfs/client.conf') # 上传文件到Fast dfs系统中 res = client.upload_appender_by_buffer(content.read()) # return dict # { # 'Group name': group_name, # 'Remote file_id': remote_file_id, # 'Status': 'Upload successed.', # 'Local file name': '', # 'Uploaded size': upload_size, # 'Storage IP': storage_ip # } if res.get('Status') != 'Upload successed.': # 上传失败,抛出异常 raise Exception('上传文件到fast dfs 失败') # 获取fast dfs存储的文件名 filename = res.get('Remote file_id') return filename # fast dfs 访问的url
def _save(self, name, content): """保存文件时使用""" # name:你选择上传文件的名字 # content:包含你上传文件内容的File对象 # 创建一个Fdfs_client对象 client = Fdfs_client(self.client_conf) # 上传文件到FastDFS系统中 res = client.upload_appender_by_buffer(content.read()) # dict { # 'Group name' : group_name, # 'Remote file_id' : remote_file_id, # 'Status' : 'Upload successed.', # 'Local file name' : '', # 'Uploaded size' : upload_size, # 'Storage IP' : storage_ip # } if res.get('Status') != 'Upload successed.': # 上传失败 raise Exception('上传文件到FastDFS失败') # 获取返回的文件id filename = res.get('Remote file_id') return filename
def _save(self, name, content): """ 当管理员在后台上传文件时,会使用此类保存上传的文件 :param name: :param content: 返回一个 :return: """ # 默认保存在此路径下 # path = super().save(name, content) # print(name, path, type(content)) # todo: 保存到FastDfs服务器上 client = Fdfs_client('utils/fdfs/client.conf') try: # 上传文件到服务器, 二进制 datas = content.read() # 上传成功返回json字符串 result = client.upload_appender_by_buffer(datas) status = result.get('Status') if status == 'Upload successed.': # 上传成功 path = result.get('Remote file_id') else: raise Exception('上传图片失败:%s' % status) except Exception as e: print(e) return path
def _save(self, name, content): """保存文件时使用 name: 你选择上传文件的名字 content: 包含你上传文件内容的File对象 """ # 这里的路径是相对于根目录而言,如果不是,程序运行会报错 client = Fdfs_client(self.client_conf) # upload_appender_by_buffer()根据文件缓存来存取文件 res = client.upload_appender_by_buffer(content.read()) # return dict # { # 'Group name': group_name, # 'Remote file_id': remote_file_id, # 'Status': 'Upload successed.', # 'Local file name': '', # 'Uploaded size': upload_size, # 'Storage IP': storage_ip # } if res.get('Status') != 'Upload successed.': raise Exception('文件上传到fast dfs失败') # 要将filename从bytes转换为str filename = res.get('Remote file_id').decode() return filename
def _save(self, name, content): """保存文件时使用""" # name:你选择上传文件的名字 # content:包含你上传文件内容的File对象 # 创建一个Fdfs_client对象 client = Fdfs_client(self.client_conf) # 上传文件到fast dfs系统 # return dict # { # 'Group name': group_name, # 'Remote file_id': remote_file_id, # 'Status': 'Upload successed.', # 'Local file name': '', # 'Uploaded size': upload_size, # 'Storage IP': storage_ip # } if success else None res = client.upload_appender_by_buffer(content.read()) # 若上传失败 if res.get('Status') != 'Upload successed.': raise Exception('上传文件到fast_dfs失败') # 获取返回的文件ID filename = res.get('Remote file_id') return filename
def _save(self,name,content,max_length=None): # 1.创建客户端的实例对象 from fdfs_client.client import Fdfs_client client = Fdfs_client(self.conf_path) # 2.上传图片, read的读取的资源是二进制 data = content.read() # upload_by_buffer 上传二进制 # upload_by_buffer 会返回上传结果 result = client.upload_appender_by_buffer(data) """ {'Status': 'Upload successed.', 'Uploaded size': '333.00KB', 'Local file name': '/home/python/Pictures/snow.jpg', 'Storage IP': '192.168.144.132', 'Status': 'Upload successed.', 'Group name': 'group1', 'Remote file_id': 'group1/M00/00/00/wKiQglvrjeeAY2LvAAU3v5e9Wi8265.jpg'} """ # 3.判断上传结果,获取file_id if result.get('Status') == 'Upload successed.': file_id = result.get('Remote file_id') return file_id else: raise Exception('上传失败')
class MyspiderPipeline(ImagesPipeline): def open_spider(self, spider): self.spiderinfo = self.SpiderInfo(spider) self.client = Fdfs_client(spider.settings.get('FDSF_CONF')) self.nginx = spider.settings.get("FDSF_NGINX") def get_media_requests(self, item, info): for urls in item['image_urls']: urls = urls.replace('http://mm.howkuai.com/', 'https://www.meizitu.com/') yield scrapy.Request(urls) def item_completed(self, results, item, info): # 将下载的图片路径(传入到results中)存储到 image_paths 项目组中,如果其中没有图片,我们将丢弃项目: paths = [x['checksum'] for ok, x in results if ok] if not paths: raise DropItem("Item contains no images") item['image_path'] = paths return item def image_downloaded(self, response, request, info): checksum = None for path, image, buf in self.get_images(response, request, info): res = self.client.upload_appender_by_buffer(buf.getvalue(), 'jpg') if res["Status"] == 'Upload successed.': checksum = res.get("Remote file_id") return self.nginx + checksum
def _save(self, name, content, max_length=None): # 1.创建 fdfs_client 客户端,加载 FDFS的配置信息 # client = Fdfs_client('utils/fastdfs/client.conf') # client = Fdfs_client(settings.FDFS_CLIENT_CONF) client = Fdfs_client(self.path) # 2.获取图片内容并上传 # 注意点:content是图片二进制内容 file_data = content.read() # buffer 上传二进制 result = client.upload_appender_by_buffer((file_data)) """ {'Group name': 'group1', 'Remote file_id': 'group1/M00/00/00/wKiOllvGHF6AS5ckAADIlkvVtHw058.jpg', 'Status': 'Upload successed.', 'Local file name': '/home/python/Desktop/images/timg.jpg', 'Uploaded size': '50.00KB', 'Storage IP': '192.168.142.150'} """ # 3.判断返回结果 返回 图片路径 if result.get('Status') == 'Upload successed.': # 返回上传的字符串 return result.get('Remote file_id') else: raise Exception('上传失败')
def _save(self, name, content): '''保存文件时使用''' # name:选择上传文件的名字 # content:包含上传文件内容的File对象 # python与fastdfs交互 # 创建一个Fdfs_client对象 client = Fdfs_client(self.client_conf) # 使用upload_appender_by_buffer方法上传文件内容,content.read()直接读取文件内容 # 该方法返回值类型为字典 res = client.upload_appender_by_buffer(content.read()) # dict # { # 'Group name': group_name, # 'Remote file_id': remote_file_id, # 'Status': 'Upload successed.', # 'Local file name': '', # 'Uploaded size': upload_size, # 'Storage IP': storage_ip # } # 判断是否上传成功 if res.get('Status') != 'Upload successed.': raise Exception('上传失败') # 返回文件ID filename = res.get('Remote file_id') # 返回的Remote file_id存储在数据表的image字段中 return filename
def post(self, request): # try: # avatar = request.body # except: # return http.JsonResponse({'code': 4002, 'errmsg': '数据不存在'}) user = request.user # 3创建FastDFS链接对象 client = Fdfs_client(settings.FASTDFS_PATH) # 获取前端传递的image文件 image = request.FILES.get('avatar') # 上传图片到fastDFS print(image) res = client.upload_appender_by_buffer(image.read()) # 判断是否上传成功 if res['Status'] != 'Upload successed.': return http.JsonResponse({'code': 4302, 'errmsg': '文件读写错误'}) # 获取上传后的路径 image_url = res['Remote file_id'] # 保存图片 User.objects.filter(id=user.id).update(avatar=image_url) # User.objects.create(avatar=avatar, url=image_url) data = {'avatar_url': Url(image_url)} return http.JsonResponse({'code': 0, 'errmsg': '头像上传成功', 'data': data})
def _save(self, name, content, client_conf=None, base_url=None): '''保存文件时使用''' # name:你选择上传文件的名字 # content:包含你上传文件内容的File对象 # 创建一个Fdfs_client对象 client = Fdfs_client(self.client_conf) # 上传文件到fast dfs系统中 res = client.upload_appender_by_buffer(content.read()) # res 返回 dict # { # 'Group name': group_name, # 'Remote file_id': remote_file_id, # 'Status': 'Upload successed.', # 'Local file name': local_file_name, # 'Uploaded size': upload_size, # 'Storage IP': storage_ip # } if res.get('Status') != 'Upload successed.': # 上传失败 raise Exception('上传文件到fast dfs失败!') # 获取返回的文件id filename = res.get('Remote file_id') return filename
def save(self, name, content): """保存文件时使用""" # name: 选择上传的文件名字 # content: 包含上传文件内容的Field对象 # 创建一个Fdfs_client对象 path = get_tracker_conf(self.client_conf) client = Fdfs_client(path) # 上传文件到fast dfs系统中 res = client.upload_appender_by_buffer(content.read()) # bytes类型 """ @return dict { 'Group name' : group_name, 'Remote file_id' : remote_file_id, 'Status' : 'Upload successed.', 'Local file name' : '', 'Uploaded size' : upload_size, 'Storage IP' : storage_ip } if success else None """ if res.get('Status') != 'Upload successed.': # 上传失败 raise Exception('上传fast dfs系统失败') # 获取file_id,并返回 filename = res.get("Remote file_id") return filename
def _save(self, name, content): """ 保存文件的时候使用 name: 选择上传文件的名字 content:包含你上传文件内容的file的对象 """ # 创建一个Fdfs client对象,指定一个client文件 client = Fdfs_client('utils/fdfs/client.conf') # 上传文件到fast dfs系统中 res = client.upload_appender_by_buffer(content.read()) # 返回值包含以下内容 # dict # { # 'Group name': group_name, # 'Remote file_id': remote_file_id, # 'Status': 'Upload successed.', # 'Local file name': '', # 'Uploaded size': upload_size, # 'Storage IP': storage_ip # } if res.get('Status') !='Upload successed.': # 上传失败 raise Exception('上传文件失败') # 获取返回的文件的id filename = res.get('Remote file_id') return filename
def _save(self, name, content): """ 在fastDFS中保存文件 :param name: 传入的文件名 :param content: 文件内容 :return: 保存到数据库中的FastDFS的文件名 """ # 创建一个Fdfs_client对象 client = Fdfs_client(self.client_conf) # 上传文件到fast dfs系统中 res = client.upload_appender_by_buffer(content.read()) """ return dict { 'Group name' : group_name, 'Remote file_id' : remote_file_id, 'Status' : 'Upload successed.', 'Local file name' : '', 'Uploaded size' : upload_size, 'Storage IP' : storage_ip } """ if res.get('Status') != 'Upload successed.': # 上传失败 raise Exception('上传文件到Fast DFS 失败!') # 获取返回的文件id filename = res.get('Remote file_id') return filename
def _save(self, name, content): ''' 文件上传 :param name: 上传文件名称 :param content: 上传文件内容 File 对象自身 :return: 上传成功文件名 ''' # 实例化对象 trackers = get_tracker_conf(self.fdfs_conf) client = Fdfs_client(trackers) # 使用上传内容方法 res = client.upload_appender_by_buffer(content.read()) # @return dict # { # 'Group name': group_name, # 'Remote file_id': remote_file_id, # 'Status': 'Upload successed.', # 'Local file name': '', # 'Uploaded size': upload_size, # 'Storage IP': storage_ip # } # 文件上传失败 if res.get('Status') != 'Upload successed.': # 谁调用谁出来异常 raise Exception('文件上传失败!') name = res.get('Remote file_id') # 不编码会报错 return name.decode()
async def save_image_to_fdfs(self, pic_str): # 把图片存储到fastdfs文件系统中 client = Fdfs_client(settings.FDFS_CLIENT_CONF) ret = client.upload_appender_by_buffer(b64decode(pic_str)) if ret.get("Status") != "Upload successed.": raise Exception("upload file failed") file_name = ret.get("Remote file_id") return settings.FDFS_URL + file_name
def _save(self, name, content): client = Fdfs_client(self.client_conf) res = client.upload_appender_by_buffer(content.read()) if res.get('Status') != 'Upload successed': # 上传失败 raise Exception('upload file to fastdfs failed') # 获取返回的文件ID filename = res.get('Remote file_id') return filename
def redisControl(self, frame): test = Fdfs_client(get_tracker_conf('./client.conf')) real, buff = cv2.imencode('.jpg', frame) ret_upload = test.upload_appender_by_buffer(buff.tobytes(), 'jpg') self.redis.hset( "PresetPosition", '"{}:{}"'.format(self.plan_id, self.number), '"{}"'.format(ret_upload.get("Remote file_id").decode())) log.info("采集编号:[{}]-采集过程id:[{}]-拍照成功".format(self.plan_id, self.number))
def _save(self, name, content): client = Fdfs_client(self.client_conf) res = client.upload_appender_by_buffer(content.read()) if res.get('Status') != 'Upload successed.': raise Exception('上传文件失败') filename = res.get('Remote file_id') return filename
class FdfsClient: client = None def __init__(self): if self.client is None: self.client = Fdfs_client(os.path.join(BASE_DIR, 'utils/fdfs/client.conf')) # 上传文件buffer def upload_buffer(self, buffer, ext_name=None): result = self.client.upload_appender_by_buffer(buffer, ext_name) return {'file_id': result.get('Remote file_id').decode()}
def _save(self, name, content): '''上传到fdfs''' client_conf_obj = get_tracker_conf(self.client_conf) client = Fdfs_client(client_conf_obj) ret = client.upload_appender_by_buffer(content.read()) if ret.get('Status') != 'Upload successed.': raise Exception('上传到fdfs失败') return ret.get('Remote file_id')
def _save(self, name, content): '''保存文件''' #创建Fdfs_client 对象 client = Fdfs_client(conf_path='./utils/fdfs/client.conf') res = client.upload_appender_by_buffer(content.read()) # print(res.get('Status')) if res.get('Status') != 'Upload successed.': raise Exception('上传文件到FAST dfs失败') filename = res.get('Remote file_id') return filename
def fastDFSStorage(name, content): """自定义上传文件""" tracker_path = get_tracker_conf('./utils/fdfs/client.conf') client = Fdfs_client(tracker_path) res = client.upload_appender_by_buffer(content.read()) if res.get('Status') != 'Upload successed.': # 上传失败 raise Exception('上传文件到fast dfs失败') # 获取返回的文件ID filename = res.get('Remote file_id') return filename.decode()
def _save(self, name, content, max_length=None): # 功能:保存文件 —— 项目二实现 #提取文件数据 data = content.read() conn = Fdfs_client(settings.FDFS_PATH) res = conn.upload_appender_by_buffer(data) if res['Status'] != 'Upload successed.': raise ValidationError('fdfs上传失败') file_id = res['Remote file_id'] return file_id
def _save(self, name, content): """ 在FastDFS中保存文件 :param name: 传入的文件名 :param content: 传入的文件内容 :return: 保存到数据库中的FastDFS的文件名 """ client = Fdfs_client(self.client_url) ret = client.upload_appender_by_buffer(content.read()) if ret.get('Status') != 'Upload successed.': raise Exception('Upload file failed') file_name = ret.get('Remote file_id') return file_name
def create(self, request, *args, **kwargs): data = request.data ser = self.get_serializer(data=data) ser.is_valie() c = Fdfs_client(settings.FDFS_CONF_URL) filter = request.FILES.get("image") res = c.upload_appender_by_buffer(filter.read()) # if filter image_url = res['Remote file_id'] # 获取sku_id sku_id = request.data.get('sku')[0] # 保存图片 img = SKUImage.objects.create(sku_id=sku_id, image=image_url) return img
def save(self, name, content): # 创建Fdfs_client对象 加载配置文件 client = Fdfs_client(self.client_conf) # 上传文件到fastdfs res = client.upload_appender_by_buffer(content) # res = client.upload_appender_by_buffer(content.read()) # res = client.upload_appender_by_filename(name) if res.get('Status') != 'Upload successed.': # 上传失败 raise Exception('上传文件到fastdfs失败') filename = res.get('Remote file_id') return filename