Beispiel #1
0
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')
Beispiel #2
0
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)
Beispiel #3
0
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)
Beispiel #5
0
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
Beispiel #6
0
 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
Beispiel #8
0
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
Beispiel #9
0
 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)
Beispiel #10
0
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:
Beispiel #11
0
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:
Beispiel #12
0
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
Beispiel #13
0
 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
Beispiel #14
0
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'
Beispiel #15
0
    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
Beispiel #16
0
 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)
Beispiel #17
0
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('上传失败')
Beispiel #18
0
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')
Beispiel #19
0
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'
Beispiel #20
0
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
Beispiel #21
0
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)
Beispiel #22
0
 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)
Beispiel #23
0
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
Beispiel #24
0
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