def upload(request): q = qiniu.Auth(settings.QINIU_ACCESS_KEY, settings.QINIU_SECRET_KEY) token = q.upload_token('brandicon') import requests, sys, io brand_icons = list( Carbrand.objects.filter(brandicon__isnull=False).values_list( 'brandicon', flat=True)) print(len(brand_icons)) i = 0 for item in brand_icons: print('开始抓取第{0}条'.format(i)) result = requests.get('http://easy.jy-epc.com/icons/brand_icons/' + item) file = io.BytesIO(result.content) res, info = qiniu.put_stream(token, item, file, 'test', len(result.content)) print(res, info) if not res: print('上传失败!') i = i + 1 return HttpResponse('success')
def upqiniu(name): url = "http://ww3.sinaimg.cn/large/{}".format(name) if "gif" in name: return if inqiniu(name): return try: bfile = requests.get(url).content except requests.exceptions.ConnectionError as e: url = "http://ww2.sinaimg.cn/large/{}".format(name) bfile = requests.get(url).content size = len(bfile) q = Auth(access_key, secret_key) token = q.upload_token(bucket_name, name, 3600) with tempfile.TemporaryFile() as temp: temp.write(bfile) temp.seek(0) ret, info = put_stream(up_token=token, key=name, file_name=name, data_size=size, mime_type='application/octet-stream', input_stream=temp)
def put_up_datum(file_path, key, kind="file", progress_handler=None): """上传资料, 三种模式: data, file, stream :parameter file_path :parameter key :parameter kind :parameter progress_handler """ up_token = get_up_token(key) if kind == "data": with open(file_path, 'rb') as input_stream: data = input_stream.read() ret, info = put_data(key=key, data=data, check_crc=True, up_token=up_token, mime_type="application/octet-stream", progress_handler=progress_handler) elif kind == "stream": size = os.stat(file_path).st_size with open(file_path, 'rb') as input_stream: ret, info = put_stream(key=key, up_token=up_token, input_stream=input_stream, data_size=size, progress_handler=progress_handler) else: ret, info = put_file(key=key, up_token=up_token, file_path=file_path, progress_handler=progress_handler) return ret, info
def upload_stream(self, key, input_stream, data_size, mime_type="application/octet-stream"): ''' 上传文件到七牛,如果指定的key对应的文件在七牛上已经存在, 会覆盖原来七牛上的文件 ''' ret, info = put_stream(self.get_upload_token(key), key, input_stream, data_size, mime_type=mime_type, check_crc=True) if info.status_code != 200: return (False, info) return (True, info)
def qiniu_upload_file(source_file, save_file_name, length): # 生成上传 Token,可以指定过期时间等 token = q.upload_token(bucket_name, save_file_name) ret, info = put_stream(token, save_file_name, source_file.stream, save_file_name, length) if info.status_code == 200: return domain_prefix + save_file_name # 域名+文件名就是图片链接 return None
def test_put_stream(self): localfile = __file__ key = 'test_file_r' size = os.stat(localfile).st_size with open(localfile, 'rb') as input_stream: token = self.q.upload_token(bucket_name, key) ret, info = put_stream(token, key, input_stream, os.path.basename(__file__), size, self.params, self.mime_type) print(info) assert ret['key'] == key
def upload_stream(self, key, input_stream, file_name, data_size, **kwargs): """ Upload stream. """ ret, info = qiniu.put_stream(self.token(), key, input_stream, file_name, data_size, **kwargs) if ret: return self.url(ret['key']) else: self.app.logger.error( 'Failed when uploading stream, error info %s' % info) return None
def qiniu_upload_file(source_file, save_file_name): # 生成上传 Token,可以指定过期时间等 token = q.upload_token(bucket_name, save_file_name) ret, info = put_stream(token, save_file_name, source_file.stream, "qiniu", os.fstat(source_file.stream.fileno()).st_size) print(type(info.status_code), info) if info.status_code == 200: return domain_prefix + save_file_name return None
def upload_stream(self, key, input_stream, data_size): # print('upload_stream: key=%s, data_size=%s' % (key, data_size)) # key = '' # input_stream=self.fileobj.stream # print('upload_stream: 1') token = self.q.upload_token(self.bucket_name, key) # print('upload_stream: 2') ret, info = put_stream(token, key, input_stream, data_size) # print(info) assert ret['key'] == key return self.get_download_url(key)
def image_up(request, company_id=None): """ 在线编辑器,上传图片。如果是系统新闻,则 company_id 为None 如果 是系统图片则,另存到 qn-webimage中 by:王健 at:2015-06-14 保存图片到七牛 by:王健 at:2015-06-17 :param request: :param company_id: :return: """ result = getResult() title = request.REQUEST.get('title', '') f = request.FILES[fieldname] filename = str(uuid.uuid4()) + '.' + f.name.split('.')[-1] if not isAllowFiles(f.name, imgtype): result['state'] = errorInfo['TYPE'] elif not isAllowSize(f.size, maxSize): result['state'] = errorInfo['SIZE'] else: if company_id: fileobj = ComFile() fileobj.bucket = QN_COMPANY_ICON_BUCKET fileobj.company_id = company_id object_name = str('/%s/%s' % (fileobj.company_id, filename)) else: fileobj = SysFile() fileobj.bucket = QN_WEBIMAGE_ICON_BUCKET object_name = str('/%s/%s' % ('sys', filename)) try: fileobj.user_id = request.user.pk fileobj.file_status = False fileobj.filetype = f.name.lower().split('.')[-1] fileobj.size = int(request.REQUEST.get('size', '0')) fileobj.name = filename fileobj.fileurl = object_name fileobj.save() #todo:将图片数据”data“ 保存到 七牛服务器。此处需要使用七牛的sdk jsondata = fileobj.get_qn_params() import qiniu r = qiniu.put_stream(jsondata['token'], jsondata['key'], f, f.size) if r[1].status_code != 200: raise except Exception, e: fileobj.delete() result['state'] = errorInfo['DIR'] else:
def put_stream(key, stream, size, mime_type=None): if mime_type is None: mime_type = 'application/octet-stream' token = get_upload_token() ret, info = qiniu.put_stream(token, key, stream, file_name=key, data_size=size, mime_type=mime_type) if info.status_code == 614: # 目标资源已存在 return True if info.status_code != 200: raise StorageError('put_stream', ret, info) return ret
def test_put_stream_v2_without_bucket_name(self): localfile = __file__ key = 'test_file_r' size = os.stat(localfile).st_size set_default(default_zone=Zone('http://upload.qiniup.com')) with open(localfile, 'rb') as input_stream: token = self.q.upload_token(bucket_name, key) ret, info = put_stream(token, key, input_stream, os.path.basename(__file__), size, hostscache_dir, self.params, self.mime_type, part_size=1024 * 1024 * 10, version='v2') assert ret['key'] == key
def upload_book(file_url, book_url): """存储书 """ headers = config.HEADERS headers['Referer'] = book_url print headers resp = requests.get(file_url, headers=headers, stream=True) datasize = int(resp.headers.get('content-length')) save_book_size(book_url, datasize) fileobj = Content(resp) q = Auth(config.QINIU['accesskey'], config.QINIU['secretkey']) token = q.upload_token(config.QINIU['bucket']) key = "bookStorage::" + book_url ret, info = put_stream(token, key, fileobj, datasize) print ret, info return 'success'
def upload_file(self, file, mime_type=None, key=None): """ upload file object Args: file: file object key: file name mime_type: file mimeType Returns: True or False and {"hash": "<Hash string>", "key": "<Key string>"} """ token, key = self.token(key=key) mime_type = mime_type or 'application/octet-stream' data_size = len(file.read()) ret, info = qiniu.put_stream(token, key, file, data_size, mime_type=mime_type, progress_handler=lambda progress, total: progress) if ret is None: raise UploadError(ret, info) return True, ret
def test_put_10m_stream_v2(self): localfile = create_temp_file(10 * 1024 * 1024 + 1) key = 'test_file_r' size = os.stat(localfile).st_size set_default(default_zone=Zone('http://upload.qiniup.com')) with open(localfile, 'rb') as input_stream: token = self.q.upload_token(bucket_name, key) ret, info = put_stream(token, key, input_stream, os.path.basename(localfile), size, hostscache_dir, self.params, self.mime_type, part_size=1024 * 1024 * 4, version='v2', bucket_name=bucket_name) assert ret['key'] == key remove_temp_file(localfile)
def doupfile(request): if request.method == 'POST': obj = request.FILES.get('imgfile') access_key = 'w4s-eRJxG6YlBX1QOeeIRulXf20gNuLHbbQj8UTQ' secret_key = 'L2v_bpJ4lK4J4fCXTvi5HotKQPPDxLyf-MRTdBqU' # 构建鉴权对象 q = Auth(access_key, secret_key) # 要上传的空间 bucket_name = 'liningjustsoso' # 上传到七牛后保存的文件名 key = obj.name # 生成上传 Token,可以指定过期时间等 token = q.upload_token(bucket_name, key, 3600) # 要上传文件的本地路径 ret, info = put_stream(token, key, obj.stream) print(info) return HttpResponse('上传成功') else: return HttpResponse('上传失败')
def ueditor(request): action = request.GET.get('action') if action == 'config': config_file = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'ueditor.json') with open(config_file, 'r', encoding='utf-8') as f: config = f.read() return HttpResponse(config, 'application/json') elif action == 'uploadimage': # 上传图片 file = request.FILES.get('file') now = datetime.now() # 上传文件名称 file_name = 'article/{year}/{month}/{day}/{name}'.format( year=now.year, month=now.month, day=now.day, name=file.name) result = { 'state': 'SUCCESS', 'url': settings.QINIU_DOMAIN + '/' + file_name, 'title': file.name, 'original': file.name, 'type': file.content_type, 'size': file.size, } try: q = qiniu.Auth(settings.QINIU_ACCESS_KEY, settings.QINIU_SECRET_KEY) token = q.upload_token(settings.QINIU_BUCKET) res, info = qiniu.put_stream(token, file_name, file, 'test', file.size) if not res: result['state'] = '上传失败!' except Exception as e: result['state'] = e return JsonResponse(result) else: return HttpResponse('success')
def upload_book(bookid, file_url, book_url): """存储书 """ headers = config.HEADERS headers['Referer'] = book_url print headers resp = requests.get(file_url, headers=headers, stream=True) datasize = int(resp.headers.get('content-length')) print "book size", datasize filename = resp.headers.get("content-disposition", "=unknown").split("=")[1].strip('"') print filename save_book_size(bookid, datasize) fileobj = Content(resp) q = Auth(config.QINIU['accesskey'], config.QINIU['secretkey']) token = q.upload_token(config.QINIU['bucket']) key = "book/ebooks/" + filename ret, info = put_stream(token, key, fileobj, datasize) print ret, info return 'success'
def put_up_datum(file_path, key, kind="file", progress_handler=None): """上传资料, 三种模式: data, file, stream :parameter file_path :parameter key :parameter kind :parameter progress_handler """ up_token = get_up_token(key) if kind == "data": with open(file_path, 'rb') as input_stream: data = input_stream.read() ret, info = put_data( key=key, data=data, check_crc=True, up_token=up_token, mime_type="application/octet-stream", progress_handler=progress_handler) elif kind == "stream": size = os.stat(file_path).st_size with open(file_path, 'rb') as input_stream: ret, info = put_stream( key=key, up_token=up_token, input_stream=input_stream, data_size=size, progress_handler=progress_handler) else: ret, info = put_file( key=key, up_token=up_token, file_path=file_path, progress_handler=progress_handler) return ret, info
def upload_stream_to_qiniu(file_stream, filename, size): """将文件上传到七牛云存储""" token = auth.upload_token(QINIU_BUCKET_NAME, filename) put_stream(token, filename, file_stream, None, size)
def _put_file_stream(self, name, cleaned_name, content, content_length): token = self.auth.upload_token(self.bucket_name) ret, info = put_stream(token, name, content, cleaned_name, content_length) if ret is None or ret['key'] != name: raise QiniuError(info)
def upload_stream_to_qiniu(file_stream, filename, size): """将数据流上传到七牛云存储""" token = AUTH.upload_token(QINIU_BUCKET_NAME, filename) result, *_ = qiniu.put_stream(token, filename, file_stream, None, size) return result
def upload(key, file_obj, filename, filesize): #生成上传 Token,可以指定过期时间等 token = q.upload_token(bucket_name, key, 3600) ret, info = put_stream(token, key, file_obj, filename, filesize) return ret, info