Esempio n. 1
0
def imgupload(req):
    username = req.session.get("username", '')
    if username == '':
        return HttpResponseRedirect('/admin')
    else:
        if req.POST:
            post = req.POST
            if req.FILES:
                img = req.FILES['img']
                # s = Client()
                bucket = Bucket('img')
                # st = bucket.conn.__dict__
                # if bucket.stat()['bytes'] == '0':
                bucket.put()
                bucket.post(acl='.r:.sinaapp.com,.r:sae.sina.com.cn')
                tut = img._name.split('.')[-1]
                dt_str = datetime.strftime(datetime.now(), '%Y%m%d%H%M%S')
                filename = dt_str + str(randint(100, 999)) + '.' + tut
                bucket.put_object(filename, img)
                # s.put('hitmstcweb',filename,img)
                image = Img(
                   name = post.get('name','dt_str'), \
                   descripe = post.get('descripe',''), \
                   img = bucket.generate_url(filename), \
                   author = User.objects.get(username = username), \
                   )
                image.save()
    content = {'last_event': get_last_event()}
    return render_to_response('imgupload.html',
                              content,
                              context_instance=RequestContext(req))
Esempio n. 2
0
def checktest(tt):
    def gpng(txt):
        url = 'https://api.handwriting.io/render/png'
        params = {
            'handwriting_id': '2D5S18M00002',
            'handwriting_size': 'auto',
            'width': '500px',
            'height': '320px',
            'line_spacing': '1.5',
            'line_spacing_variance': 0.1,
            'text': 'Though bladed corn be lodged and trees blown down'
        }

        params['text'] = txt
        r = requests.get(url, auth=TOKEN_PAIR, params=params)
        return r

    correct_time = time.strftime('%m_%d_%H_%M_%S', time.localtime(time.time()))
    bucket = Bucket('tempic')  #修改成你自己的storage名
    bucket.put()
    bucket.post(acl='.r:*', metadata={'expires': '1d'})
    f = gpng(tt)
    data = f.content
    bucket.put_object(correct_time + ".png", data)
    file_url = bucket.generate_url(correct_time + ".png")
    return file_url
Esempio n. 3
0
def put_obj2storage(file_name='',
                    data='',
                    expires='365',
                    type=None,
                    encoding=None,
                    domain_name=STORAGE_DOMAIN_NAME):
    whichStorage = int(getAttr('DEFAULT_STORAGE'))
    if whichStorage == 0:
        bucket = Bucket(domain_name)
        bucket.put_object(file_name,
                          data,
                          content_type=type,
                          content_encoding=encoding)
        return bucket.generate_url(file_name)
    elif whichStorage == 1:
        import qiniu.conf, qiniu.rs, qiniu.io
        qiniu.conf.ACCESS_KEY = getAttr('QNKEY')
        qiniu.conf.SECRET_KEY = getAttr('QNSECRET')
        policy = qiniu.rs.PutPolicy(getAttr('QNSTORAGE'))
        uptoken = policy.token()
        key = file_name
        if key[0] == "/":
            key = key[1:]
        ret, err = qiniu.io.put(uptoken, key, data)
        if err is not None:
            print 'err = ', err
            return ''
        ###下面返回的网址有可能不同,有的是 xxxx.u.qiniudn.com 请改为自己的
        return "http://%s/%s" % (getAttr('QNDOMAIN'), key)
    else:
        #可后续扩展其他云存储
        pass
    return ''
Esempio n. 4
0
def put_obj2storage(file_name = '', data = '', expires='365', type=None, encoding= None, domain_name = setting.STORAGE_DOMAIN_NAME):
    import sae.const  
    access_key = sae.const.ACCESS_KEY  
    secret_key = sae.const.SECRET_KEY  
    appname = sae.const.APP_NAME  
    domain_name = "attachment" 
    bucket = Bucket(domain_name)
    bucket.put()
    bucket.post(metadata={'expires': '2d'})
    attrs = bucket.stat()
    bucket.put_object(file_name, data)
    file_url = bucket.generate_url(file_name)
    #begin to created
    im = Image.open("/s/attachment/" + file_name)
    #im = Image.open(bucket.get_object_contents(file_name))
    im.thumbnail((320,200))
    #im.save("/s/attachment/" + file_name+"_thumbnail.jpg")
    imgext = re.search("(\.\w*)$", file_name)
    if imgext:
        thumbnail_name = file_name + "_thumbnail"+ imgext.group(1)
    else:                
        thumbnail_name = file_name + "_thumbnail.jpg"
    pureext = imgext.group(1)[1:]
    if pureext == "jpg":
        pureext = "jpeg"
    #bucket.put_object(thumbnail_name, im.tostring('jpeg', 'RGB'))
    bucket.put_object(thumbnail_name, im.tostring("jpeg", 'RGB'))
    thumbnail_url = bucket.generate_url(thumbnail_name)
    #s = sae.storage.Client()
    #ob = sae.storage.Object(data = data, cache_control='access plus %s day' % expires, content_type= type, content_encoding= encoding)
    return file_url, thumbnail_url
Esempio n. 5
0
    def delThenSetToSAEStorage(filename, data):
        monkey.patch_all()
        bucket = Bucket('media')
        bucket.put()
        bucket.post(
            acl=
            '.r:.sinaapp.com,.r:sae.sina.com.cn,.r:.vipsinaapp.com,.r:.qq.com,.r:.wx.qq.com',
            metadata={'expires': '7d'})
        tmp = __method_get_namelist(filename)
        if tmp == None:
            return None
        filetype = tmp[1]

        if filetype.lower() in ('jpg', 'jpeg', 'bmp', 'gif', 'png'):
            filepath = 'image/' + filename
        elif filetype.lower() in ("swf", "wmv"):
            filepath = 'video/' + filename
        elif filetype.lower() in ("wma", "mp3"):
            filepath = 'music/' + filename
        else:
            filepath = filename

        try:
            bucket.delete_object(filepath)
        except Exception:
            pass

        bucket.put_object(filepath, data)
        return bucket.generate_url(filepath)
Esempio n. 6
0
def GetAllFilesOfStorage():
    global domain_name
    try:

        bucket = Bucket(domain_name)
        fileList = bucket.list()
        L = []
        count = 0
        for f in fileList:
            #fileTime = f.last_modified.encode()
            #fileTime = fileTime.replace("T", " ").split(".")[0]
            #timeArray = time.strptime(fileTime, "%Y-%m-%d %H:%M:%S")
            #timeStamp = int(time.mktime(timeArray))
            #startTime = "2015-8-2 00:00:00"
            #if timeStamp > time.mktime(time.strptime(startTime,'%Y-%m-%d %H:%M:%S')):
            L.append({
                "name": f.name,
                "size": f.bytes,
                "url": bucket.generate_url(f.name),
                "last_modified": f.last_modified
            })
            count = count + 1
        Log("GetAllFilesOfStorage Count %s" % str(count))
        return L
    except Exception, e:
        Log("Error when GetAllFilesOfStorage: %s" % e)
        return None
def add_object(bucket_name, folder_path, object_name, object_data):
    """add object

    Args:
        bucket_name: name of bucket
        folder_path: folder path
        object_name: name of object
        object_data: object data

    Returns:
        True if add successfully
        False if object existed
    """
    bucket = Bucket(bucket_name)
    folder_path = complete_folder(folder_path)
    object_path = "%s%s" % (folder_path, object_name)

    virtual_object_path = "/s/%s/%s" % (bucket_name, object_path)
    print 'class StorageInterface add_object() virtual_object_path: %s' % virtual_object_path
    if is_file_existed(virtual_object_path):
        print 'class StorageInterface add_object() file existed! object_path: %s' % object_path
        return False
    
    print 'class StorageInterface add_object() start put_object() object_path: %s' % object_path
    # print 'class StorageInterface add_object() start put_object() object_data[0]: %s' % str(object_data)[0]
    bucket.put_object(object_path, object_data)
    print 'end'
    return True
Esempio n. 8
0
def sae_save_file( f , storage_name , file_name = None ):
    from sae.storage import Bucket
    bucket = Bucket(storage_name)
    print bucket
    if file_name is None: 
        file_name = f._get_name()
    return bucket.put_object(file_name, f)
def get_max_file_index(bucket_name, folder_path):
    """get the max file index in specific folder

    Args:
        bucket_name: name of bucket
        folder_path: folder path

    Returns:
        -1 if no files
        an positive int (including zero) indicating the max file index
    """
    bucket = Bucket(bucket_name)
    folder_path = complete_folder(folder_path)

    # read files
    files = [i for i in bucket.list(path=folder_path)]

    # if the folder not exists or folder has no file
    if len(files)==0:
        return -1

    # if has files, return the max file index
    max_index = 0
    for i in files:
        num = int(i['name'].split(folder_path)[1].split('.')[0])
        if num>max_index:
            max_index = num

    return max_index
Esempio n. 10
0
def UploadFile(file_name, file_content):
    global domain_name, maxSize
    #Log("UploadFile")

    #import sae.const
    #access_key = sae.const.ACCESS_KEY
    #secret_key = sae.const.SECRET_KEY
    #appname = sae.const.APP_NAME

    try:
        from sae.storage import Bucket
        bucket = Bucket(domain_name)

        file_content.seek(0, 2)
        length = file_content.tell()
        if (length > maxSize):
            Log("UploadFile oversize")
            return "oversize"
        else:
            file_name = file_name.replace(' ', '')
            file_content.seek(0)
            bucket.put_object(file_name, file_content.read())
            #url = bucket.generate_url(file_name)
            url = "http://applinzi.ddianke.com/%s" % file_name
            Log("UploadFile url %s" % url)
            return url
    except Exception, e:
        Log("Error when UploadFile: %s" % e)
        return None
Esempio n. 11
0
    def store_image(self):
        """
        download image from WeChat url and store in storage. update stored_url
        """
        try:
            response = urllib2.urlopen(self.input_url)

            if self.is_local_storage:
                # just use the current url
                self.stored_url = self.input_url

            else:
                # save to remote storage
                from sae.storage import Bucket
                # print ("in else "+self.storage_domain_name)
                bucket = Bucket('wechatimgsave')
                filename = self.definefilename(self.input_url, '.jpeg')
                bucket.put_object(obj=filename,
                                  contents=response.read(),
                                  content_type='image/jpeg',
                                  content_encoding=None,
                                  metadata=None)
                self.stored_url = bucket.generate_url(filename)

        except urllib2.HTTPError as e:
            logging.error("Error in opening " + self.input_url +
                          "with error code: " + e.code)
Esempio n. 12
0
def upload_file_handle(f, user_id):
    from sae.storage import Bucket
    bucket = Bucket('image')
    bucket.put()
    file_postfix = f.name.split('.')[-1]
    file_name = str(user_id) + '.' + file_postfix
    bucket.put_object(file_name, f.read())
    return 'http://sumioo-image.stor.sinaapp.com/' + file_name
Esempio n. 13
0
def DeleteFileFromStorage(fileName):
    global domain_name
    try:
        from sae.storage import Bucket
        bucket = Bucket(domain_name)
        bucket.delete_object(fileName)
        Log("DeleteFileFromStorage fileName %s" % fileName)
    except Exception, e:
        Log("Error when DeleteFileFromStorage: %s" % e)
        return None
Esempio n. 14
0
 def STT(self, filePath): # 输入语音文件(amr格式),输出文字
     try:
         bucket = Bucket('wechat')
         result = self.__client.asr(bucket.get_object_contents(filePath), self.__format, self.__rate, {'cuid': self.__cuid,
                                                                                               'dev_pid': self.__dev_pid})
         if 'error_code' in result: # 识别失败
             raise Exception("error_code: %s, error_msg: %s" % (result['error_code'], result['error_msg']))
         return result['result'][0] # 提供1-5个候选结果,utf-8 编码
     except Exception, ex:
         print 'BaiduSTT.STT error:%s' % (ex)
         return ''
Esempio n. 15
0
def upload_storage(bucketname=BUCKET, savename="test.txt", filedata=None):
    if bucketname and savename and filedata:
        if DEBUG:
            return None
        from sae.storage import Bucket
        bucket = Bucket(bucketname)
        if savename[0] == "/":
            savename = savename[1:]
        bucket.put_object(savename, filedata)
        return bucket.generate_url(savename)
    else:
        return False
Esempio n. 16
0
def put_obj2storage(file_name='',
                    data='',
                    expires='365',
                    type=None,
                    encoding=None,
                    domain_name=STORAGE_DOMAIN_NAME):
    bucket = Bucket(domain_name)
    bucket.put_object(file_name,
                      data,
                      content_type=type,
                      content_encoding=encoding)
    return bucket.generate_url(file_name)
Esempio n. 17
0
def thumbnail(request, filename):
    bucket = Bucket('upload')
    bucket.put()
    bucket.put_object("image/" + filename, request.FILES['file'])

    obj = bucket.get_object_contents("image/" + filename)
    image = Image.open(StringIO(obj))
    image.thumbnail((160, 120), Image.ANTIALIAS)
    imgOut = StringIO()
    image.save(imgOut, 'jpeg')
    img_data = imgOut.getvalue()
    bucket.put_object('thumbnail/' + filename, img_data)
    imgOut.close()
Esempio n. 18
0
def delete_file(file_path):
    from urlparse import urlsplit
    from sae.storage import Bucket

    res = urlsplit(file_path)

    hostname, path = res.hostname, res.path

    bucket_name = hostname.split(".", 1)[0].split("-")[-1]

    _, object_name = path.split("/", 1)

    bucket = Bucket(bucket_name)
    bucket.delete_object(object_name)
Esempio n. 19
0
    def __init__(self, **kwargs):
        bucket = kwargs['bucket'] if 'bucket' in kwargs else ''
        accesskey = kwargs['accesskey'] if 'accesskey' in kwargs else ''
        secretkey = kwargs['secretkey'] if 'secretkey' in kwargs else ''
        account = kwargs['account'] if 'account' in kwargs else ''  # app name
        retries = long(
            kwargs['retries']) if 'retries' in kwargs else 3  # app name

        self.prefix = kwargs['prefix'] if 'prefix' in kwargs else ''

        if accesskey and secretkey and account:
            conn = Connection(accesskey, secretkey, account, retries)
            self.kv = conn.get_bucket(bucket)
        else:
            self.kv = Bucket(bucket)
Esempio n. 20
0
    def listDirOfSAEStorage(path=''):
        monkey.patch_all()
        bucket = Bucket('media')
        bucket.put()
        bucket.post(
            acl=
            '.r:.sinaapp.com,.r:sae.sina.com.cn,.r:.vipsinaapp.com,.r:.qq.com,.r:.wx.qq.com',
            metadata={'expires': '7d'})

        if not path.endswith('/'):
            if path == '':
                pass
            else:
                path = path + '/'

        return [i for i in bucket.list(path)]
Esempio n. 21
0
def retrieve(url, bucket, filename, retry=5):
    """保存url的图片到storage"""
    from sae.storage import Bucket
    for x in xrange(1, 6):
        try:
            img = urllib2.urlopen(url)
            b = Bucket(bucket)
            mime = RE_MIME.search(str(img.info()))
            if mime:
                mime = mime.groups()[0]
            b.put_object(filename, img.read(), mime)
            print 'Save "%s" to "%s/%s", MimeType:"%s"' % (url, bucket,
                                                           filename, mime)
            return "http://akbquiz-%s.stor.sinaapp.com/" % (
                bucket, quote(filename.encode('utf-8')))
        except Exception, e:
            print 'Save image file "%s" failed, retrying: %d. (%s)' % (url, x,
                                                                       e)
        pass
Esempio n. 22
0
    def getFromSAEStorage(filename):
        monkey.patch_all()
        bucket = Bucket('media')
        bucket.put()
        bucket.post(
            acl=
            '.r:.sinaapp.com,.r:sae.sina.com.cn,.r:.vipsinaapp.com,.r:.qq.com,.r:.wx.qq.com',
            metadata={'expires': '7d'})

        filetype = __method_get_namelist(filename)[1]
        if filetype.lower() in ('jpg', 'jpeg', 'bmp', 'gif', 'png'):
            filepath = 'image/' + filename
        elif filetype.lower() in ("swf", "wmv"):
            filepath = 'video/' + filename
        elif filetype.lower() in ("wma", "mp3"):
            filepath = 'music/' + filename
        else:
            filepath = filename
        return bucket.generate_url(filepath)
Esempio n. 23
0
def add_objects(bucket_name, folder_path, objects):
    """add objects

    Args:
        bucket: name of bucket
        folder_path: folder path
        objects: dictionary of filename and its data, for example:

            objects['sample.txt']="hello world"
    """
    bucket = Bucket(bucket_name)
    folder_path = complete_folder(folder_path)

    for key in objects.keys():
        object_path = "%s%s" % (folder_path, key)
        virtual_object_path = "/s/%s/%s" % (bucket_name, object_path)
        if is_file_existed(virtual_object_path):
            print 'class StorageInterface add_objects() file existed! object_path: %s' % object_path
            continue
        bucket.put_object(object_path, objects[key])
Esempio n. 24
0
def img_upload(request):
    try:
        reqfile = request.FILES['upload_file']
        if reqfile is None:
            result = {'status': '1', 'info': '图片为空!'}
            return HttpResponse(json.dumps(result),
                                content_type='application/json')
        else:
            from os import environ
            online = environ.get("APP_NAME", "")
            if online:
                import sae.const
                access_key = sae.const.ACCESS_KEY
                secret_key = sae.const.SECRET_KEY
                appname = sae.const.APP_NAME
                domain_name = "img"  # 刚申请的domain
                str_time = str(time.mktime(
                    datetime.datetime.now().timetuple()))
                str_time = str_time[:-2]
                reqfile.name = str_time + ".png"
                import sae.storage
                from sae.storage import Bucket
                bucket = Bucket('img')
                bucket.put()
                # http://www.sinacloud.com/doc/sae/python/storage.html
                bucket.put_object(
                    reqfile.name,
                    reqfile,
                    content_type='application/x-www-form-urlencoded ')
                url = bucket.generate_url(reqfile.name)
                result = {'status': '1', 'info': '图片上传成功!', 'url': url}
                return HttpResponse(json.dumps(result),
                                    content_type='application/json')
            else:
                result = {'status': '0', 'info': '图片上传出现错误!'}
                return HttpResponse(json.dumps(result),
                                    content_type='application/json')
    except Exception, e:
        result = {'status': '0', 'info': '图片上传出现错误:%s' % e}
        return HttpResponse(json.dumps(result),
                            content_type='application/json')
Esempio n. 25
0
 def ImageClassify(self, filePath):
     try:
         """ 读取图片 """
         bucket = Bucket('wechat')
         image = bucket.get_object_contents(filePath)
         """ 调用通用物体识别 """
         self.__client.advancedGeneral(image)
         """ 如果有可选参数 """
         options = {}
         options["baike_num"] = 0
         """ 带参数调用通用物体识别 """
         info = self.__client.advancedGeneral(image, options)
         #print info
         if 'error_code' in info:  # 识别失败
             raise Exception("error_code: %s, error_msg: %s" %
                             (info['error_code'], info['error_msg']))
         print "image:%s" % (filePath)
         for item in info['result']:
             print 'root:%s,keyword:%s' % (item['root'], item['keyword'])
     except Exception, ex:
         print 'BaiduImageClassify.ImageClassify error:%s' % (ex)
Esempio n. 26
0
def image_upload():
    if request.method == 'POST':
        image = request.files['fileList']
        if image:
            bucket = Bucket("avatar")
            numObejcts = int(bucket.stat()["objects"])
            imageId = str(numObejcts + 1) + ".jpg"

            # resize image
            outbuf = cStringIO.StringIO()
            size = (800, 900)
            process = Image.open(image.stream)
            process.resize(size, Image.BILINEAR)
            process.save(outbuf, "JPEG")

            # save image
            bucket.put_object(imageId, outbuf)
            # bucket.put_object(imageId, image.stream)
            url = bucket.generate_url(imageId)

            return url
    return jsonify(error="fail to upload image")
Esempio n. 27
0
def delete_blog(request):
    if request.is_ajax() and request.method == 'POST':
        blog_id = request.POST.get('blog_id')
        if blog_id is None:
            result = {'status': '0', 'info': '出现错误:待删除的博客ID不能为空!'}
        else:
            try:
                b = Blog.objects.get(id=blog_id)
                # 删除该博客对应的图片
                import sae.storage
                from sae.storage import Bucket
                bucket = Bucket('img')
                img_file = b.image.url
                file_name = img_file[-14:]
                if file_name != 'default000.jpg':
                    bucket.delete_object(file_name)
                b.delete()
                result = {'status': '1', 'info': '已成功删除该博客!'}
            except ObjectDoesNotExist:
                result = {'status': '1', 'info': '待删除的博客不存在!'}
        return HttpResponse(json.dumps(result),
                            content_type='application/json')
    return render(request, 'blogs/index.html')
Esempio n. 28
0
def UploadFileFromUrl(file_name, url, values=None):
    #url=url+'//'
    global domain_name
    Log("Upload File From Url")
    try:
        if values is not None:
            data = json.dumps(values, ensure_ascii=False).encode('utf-8')
            req = urllib2.Request(url, data)
            sock = urllib2.urlopen(req)
        else:
            sock = urllib.urlopen(url)

        f = sock.read()
        stream = cStringIO.StringIO(f)
        sock.close()
        bucket = Bucket(domain_name)
        file_name = file_name.replace(' ', '')
        bucket.put_object(file_name, stream)
        return_url = bucket.generate_url(file_name)
        Log("Upload File From Url url %s" % return_url)
        return return_url
    except Exception, e:
        Log("Error when Upload File From Url: %s" % e)
Esempio n. 29
0
def get_urls(bucket_name, folder_path):
    """get resource urls from storage

    Args:
        bucket_name: the name of bucket
        folder_path: resources folder path

    Returns:
        list of resource urls
    """
    bucket = Bucket(bucket_name)

    folder_path+='/' # folder should be end with '/'

    # if no file
    files = [i for i in bucket.list(path=folder_path)]
    if len(files) == 0:
        return []

    # else has files
    filenames = []
    for item in [i['name'] for i in bucket.list(path=folder_path) if i['name'][-3:]=="jpg"]:
        filenames.append(item)
    return [bucket.generate_url(i) for i in filenames]
Esempio n. 30
0
def delete_object(bucket_name, folder_path, object_name):
    """delete object

    Args:
        bucket_name: name of bucket
        folder_path: folder path
        object_name: name of object

    Returns:
        True if delete successfully
        False if object unexisted
    """
    bucket = Bucket(bucket_name)
    folder_path = complete_folder(folder_path)
    object_path = "%s%s" % (folder_path, object_name)

    virtual_object_path = "/s/%s/%s" % (bucket_name, object_path)
    if not is_file_existed(virtual_object_path):
        print 'class StorageInterface delete_object() file unexisted! object_path: %s' % object_path
        return False

    bucket.delete_object(object_path)
    print 'class StorageInterface delete_object delete successfully!'
    return True