示例#1
0
文件: views.py 项目: firsthym/rebang
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
示例#2
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
示例#3
0
文件: admin.py 项目: yobin/saepy-log
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 ""
示例#4
0
文件: admin.py 项目: yobin/saepy-log
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 ''
示例#5
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)
示例#6
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));
示例#7
0
    def post(self, id):
        id = int(id)
        from sae.storage import Bucket

        bucket = Bucket('audio')
        fid = str(self.current_user) + datetime.now().strftime('/%Y-%m-%dT%H-%M-%S')
        name = fid + '.wav'
        #length = int(request.get_header('content-length',0))

        bucket.put_object(name, self.request.body)

        name = bucket.generate_url(name)

        sss = Session()
        model = RoomChat()
        model.room_id = id
        model.content_type = 'audio'
        model.content = name
        model.user_name = self.user.name
        model.user_id = self.current_user
        model.create_at = datetime.now()

        sss.add(model)
        sss.commit()

        ls = GetTop.ajax(id)
        self.render_list(*ls)
示例#8
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
示例#9
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))
示例#10
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)
示例#11
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
示例#12
0
文件: views.py 项目: yumendy/shsj
def submit_report(req):
	username = req.session.get('username','')
	content = {'active_menu':'submitReport','num_need_check':num_need_check()}
	status = ''
	if username != '':
		user = MyUser.objects.get(user__username = username)
		content['user'] = user
	else:
		return HttpResponseRedirect('/login/')
	if req.POST:
		post = req.POST
		if req.FILES:
			img1 = req.FILES['img1']
			img2 = req.FILES['img2']
			bucket = Bucket('img')
			bucket.put()
			bucket.post(acl='.r:.sinaapp.com,.r:sae.sina.com.cn')
			tut1 = img1._name.split('.')[-1]
			tut2 = img2._name.split('.')[-1]
			if tut1.lower() not in ['jpg','jpeg','bmp','gif','png']:
				tut1 = 'jpg'
			if tut2.lower() not in ['jpg','jpeg','bmp','gif','png']:
				tut2 = 'jpg'
			dt_str = datetime.datetime.strftime(datetime.datetime.now(),'%Y%m%d%H%M%S')
			filename1 = dt_str + str(randint(100,999)) + '.' + tut1
			filename2 = dt_str + str(randint(100,999)) + '.' + tut2
			bucket.put_object(filename1,img1)
			bucket.put_object(filename2,img2)
		info = post.get('info','')
		if len(info) < 500:
			status = 'info_short'
		else:
			report = Report(
							name = post.get('name',''),
							start_time = post.get('start_time',''),
							end_time = post.get('end_time',''),
							address = post.get('address',''),
							status = 1,
							apply_time = 0,
							apply_score = 0,
							report_type = post.get('report_type',''),
							author_type = post.get('author_type',''),
							info_type = post.get('info_type',''),
							author = user,
							img1 = bucket.generate_url(filename1), \
							img2 = bucket.generate_url(filename2), \
							)
			if post.get('info_type','') == '2':
				a = re.compile(r'(<script)(.*)(>)',re.I)
				res = r'&lt;script\2&gt;'
				report.info = a.sub(res,info)
			else:
				report.info = info
			report.save()
			status = 'success'
		content['status'] = status
	return render_to_response('submitreport.html', content, context_instance = RequestContext(req))
示例#13
0
 def save_with_bucket(self, _bucket, fname, fcontent):
     '''
     _bucket is customer bucket name
     '''
     bk = Bucket(_bucket)
     import StringIO
     b = StringIO.StringIO(fcontent)
     bk.put_object(fname, b.read())
     return bk.generate_url(fname)
示例#14
0
def save_img(uid,device_name,file1):
    filename = file1.name
    timestamp=filename.split(".")[0]
    url="www.baidu.com"
    if 'SERVER_SOFTWARE' in os.environ:
        bucket = Bucket('domain2')
        bucket.put_object(filename, file1)
        url = bucket.generate_url(filename)
    image=Img.create(uid=uid,timestamp=timestamp,device_name=device_name,url=url)
    image.save()
示例#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
示例#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)
示例#17
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
示例#18
0
 def store_image(self):
     match = re.search(r'p[\d]+.jpg', self.douban.images)
     if match:
         image = urllib2.urlopen('http://img4.douban.com/view/photo/raw/public/' + match.group()).read()
     else:
         image = urllib2.urlopen(self.douban.images).read()
     from sae.storage import Bucket
     bucket = Bucket('infopic')
     bucket.put()
     filename = '%s.jpg' % self.id
     bucket.put_object(filename, image)
     url = bucket.generate_url(filename)
     self.images = url
     self.save()
示例#19
0
文件: views.py 项目: merrycode/red
def _upload_image(request, field="cover"):
    if 'file' in request.FILES:
        fobj = request.FILES['file']
        content = fobj.read()
        suffix = fobj.name.rsplit('.', 1)[1].lower()
        if suffix not in ('jpg', 'png', 'jpeg'):
            return _error(u'请上传jpg或者png格式的照片')
        md5 = hashlib.md5(content).hexdigest()
        filename = '%s.%s' % (md5, suffix)

        from sae.storage import Bucket
        bucket = Bucket('adam')
        bucket.put()
        bucket.post(acl='.r:.sinaapp.com,.r:sae.sina.com.cn', metadata={'expires': '1y'})
        bucket.put_object(filename, content)
        return bucket.generate_url(filename)
    return request.POST.get(field, '').strip()[0:255]
示例#20
0
def save_image(con, file1, pid, is_front):
    if file1.filename == '':
        return
    # filename = str(pid) + '_' + get_random_number_str() + '_' + file1.filename
    ext = file1.filename.split('.')[-1]
    filename = str(pid) + get_random_number_str() + '.' + ext
    if 'SERVER_SOFTWARE' in os.environ:
        bucket = Bucket('domain1')
        bucket.put_object(filename, file1)
        url = bucket.generate_url(filename)
    else:
        url = filename
        file_full_path = os.path.join(UPLOAD_FOLDER, filename)
        if os.environ.get('USER') == 'Lily':
            file_full_path = "/Users/Lily/PycharmProjects/EIA/static/upload/" + filename
        file1.save(file_full_path)
    save_img_url(con, url, pid, 1 if is_front else 0)
示例#21
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)
示例#22
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')
示例#23
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")
示例#24
0
 def POST(self):
     bucket = Bucket('backup')
     str_data = web.data() #获得post来的数据
     js = json.loads(str_data,"utf-8")
     if "passwd" in js.keys():
         if js["passwd"] != config.passwdDatas:
             return u"密码错误"
     else:
         return u"请求格式不正确"
     if "type" in js.keys():
         if "filename" in js.keys():
             stamp = kv.get("kvdatastamp")
             sha1=hashlib.sha1()
             sha1.update(stamp)
             sha1.update(config.keyUserRestore)
             hashcode=sha1.hexdigest()
             if not "hashcode" in js.keys():
                 return u"请求类型不正确"
             if hashcode != js["hashcode"]:
                 return u"验证失败"
             if js["type"] == "restore":
                 return ReadZipFile(js["filename"])
             elif js["type"] == "getfile":
                 return bucket.generate_url(js["filename"])
             else:
                 return u"请求类型不正确"
         elif js["type"] == "getfilelist":
             filelist = []
             stamp = str(int(time.time()))
             filelist.append(stamp)
             kv.set("kvdatastamp",stamp)
             for finf in bucket.list():
                 filelist.append(str(finf[u'name']))
             return ",".join(filelist)
         else:
             return u"请求格式不正确"
             
     else:
         return u"请求格式不正确"
示例#25
0
文件: files.py 项目: eavae/mlang
class AvatarManager(object):
    def __init__(self,app):
        self.app = app
        self.bucket = Bucket(app.config['STORAGE_NAME'])
        self.bucket.put()
        self.bucket.post(acl='.r:.sinaapp.com,.r:sae.sina.com.cn', metadata={'expires': '1d'})

    def _saveAvatar(self,file,filename,size,sizecode):
        filetype = file.mimetype.split('/')[1]
        img = Image.open(StringIO(file.read()))
        file.seek(0)
        ratio = float(img.size[0]) / img.size[1]
        if ratio > 1:
            length = int(img.size[1]/2)
        else:
            length = int(img.size[0]/2)
        x0,y0 = int(img.size[0]/2),int(img.size[1]/2)
        img = img.crop((x0-length,y0-length,x0+length,y0+length))
        img = img.resize((size,size),Image.ANTIALIAS)

        output = StringIO()
        img.save(output,filetype)
        content = output.getvalue()
        output.close()
        self.bucket.put_object('avatar/'+filename, content, content_type=file.mimetype)

    def saveAvatar(self,file,id):
        filename = str(id)
        self._saveAvatar(file,filename,self.app.config['AVATAR_SIZE_S'],'s')
        self._saveAvatar(file,filename,self.app.config['AVATAR_SIZE_M'],'m')
        self._saveAvatar(file,filename,self.app.config['AVATAR_SIZE_L'],'l')

    def getAvatarUrl(self,id,sizecode):
        try:
            self.bucket.stat_object('avatar/'+str(id)+sizecode)
        except :
            return self.app.config['DEFAULT_AVATAR_URL']+'/'+sizecode
        return self.bucket.generate_url('avatar/'+str(id)+sizecode)
示例#26
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)
示例#27
0
    def post(self):

        msg = []
        from sae.storage import Bucket

        domain = 'ufiles'

        def dt0num(d=None):
            if d is None:
                d = datetime.now()
            dt0 = datetime(2010, 1, 1)
            return int((d - dt0).total_seconds())

        sss = Session()
        dbf = File(user_id=self.get_argument('uid'), domain=domain, create_at=datetime.now(), visible=1)
        sss.add(dbf)
        bucket = Bucket(domain)

        for f in self.request.files['Filedata']:

            fname, ext = os.path.splitext(f['filename'])

            dbf.path = self.get_argument('uid') + '/' + fname \
                + '.' + str(dt0num()) + ext

            bucket.put_object(dbf.path, f['body'])

            #url = bucket.generate_url(path)

            dbf.size = len(f['body'])

            sss.commit()

            msg.append(dict(name=f['filename'], len=len(f['body']), url=bucket.generate_url(dbf.path)))


        self.render_dict(code=200, uid=self.get_argument('uid', '-1'), msg=msg)
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]
示例#29
0
def get_url():
    bucket = Bucket(BUCKET_NAME)
    # bucket.put()
    # bucket.post(acl='.r:.sinaapp.com,.r:sae.sina.com.cn', metadata={'expires': '1d'})
    # attrs = bucket.stat(
    return bucket.generate_url(TARGET_FILE)
示例#30
0
文件: views.py 项目: wtq2255/uuweb
def uploadPic(request, id):
	if isUser(request):
		if request.method == 'POST':
			response = HttpResponse()
			pic_title = request.POST.get("pic_title",'')
			pic_type = request.POST.get('pic_type','')
			pic_tab = request.POST.get('pic_tab_format','')
			pic_describe = request.POST.get('pic_describe','')
			pic_file = request.FILES['pic_file']
			pic_name = time.strftime('%Y%m%d%H%M%S',time.localtime(time.time())) + '_' + str(random.randint(1,999999999)) + '.jpg'

			if 'SERVER_SOFTWARE' in os.environ:
				pic_path = str(id) + '/' + pic_name
				from sae.storage import Bucket
				bucket = Bucket('media')
				bucket.put_object(pic_path, pic_file)
				try:
					user = Users.objects.get(id=id)
					Pictures(pic_title=pic_title,pic_type=pic_type,pic_tab=pic_tab,pic_describe=pic_describe,pic_src=bucket.generate_url(pic_path),users=user).save()
				except Exception, e:
					response.write(False)
			else:
				path = MEDIA_URL + str(id) + '/'
				pic_path = path + pic_name
				if not os.path.exists(path[1:]):
					os.makedirs(path[1:])
				try:
					f = open(pic_path[1:],'ab')
					for chunk in pic_file.chunks():  
						f.write(chunk)  
					f.close()
					user = Users.objects.get(id=id)
					Pictures(pic_title=pic_title,pic_type=pic_type,pic_tab=pic_tab,pic_describe=pic_describe,pic_src=pic_path,users=user).save()
				except Exception, e:
					response.write(False)
			
			response.write(True)
			return response		
示例#31
0
文件: views.py 项目: yumendy/shsj
def report_edit(req):
	username = req.session.get('username','')
	status = ''
	if username != '':
		user = MyUser.objects.get(user__username = username)
	else:
		return HttpResponseRedirect('/login/')
	Id = req.GET.get('id','')
	try:
		report = Report.objects.get(pk = Id)
	except:
		return HttpResponseRedirect('/reportlist/')
	if report.author != user:
		return HttpResponseRedirect('/reportlist/')
	else:
		if report.status != 1:
			status = 'cannot_edit'
		else:
			if req.POST:
				post = req.POST
				if req.FILES:
					img1 = req.FILES['img1']
					img2 = req.FILES['img2']
					bucket = Bucket('img')
					bucket.put()
					bucket.post(acl='.r:.sinaapp.com,.r:sae.sina.com.cn')
					tut1 = img1._name.split('.')[-1]
					tut2 = img2._name.split('.')[-1]
					if tut1.lower() not in ['jpg','jpeg','bmp','gif','png']:
						tut1 = 'jpg'
					if tut2.lower() not in ['jpg','jpeg','bmp','gif','png']:
						tut2 = 'jpg'
					dt_str = datetime.datetime.strftime(datetime.datetime.now(),'%Y%m%d%H%M%S')
					filename1 = dt_str + str(randint(100,999)) + '.' + tut1
					filename2 = dt_str + str(randint(100,999)) + '.' + tut2
					bucket.put_object(filename1,img1)
					bucket.put_object(filename2,img2)
				info = post.get('info','')
				if len(info) < 500:
					status = 'info_short'
				else:
					report.name = post.get('name','')
					report.start_time = post.get('start_time','')
					report.end_time = post.get('end_time','')
					report.address = post.get('address','')
					report.report_type = post.get('report_type','')
					report.author_type = post.get('author_type','')
					report.info_type = post.get('info_type','')
					try:
						img1 = bucket.generate_url(filename1)
						img2 = bucket.generate_url(filename2)
						report.img1 = img1
						report.img2 = img2
					except:
						pass
					if post.get('info_type','') == '2':
						a = re.compile(r'(<script)(.*)(>)',re.I)
						res = r'&lt;script\2&gt;'
						report.info = a.sub(res,info)
					else:
						report.info = info
					report.save()
					status = 'success'
	content = {'user':user,'active_menu':'submitReport','num_need_check':num_need_check(),'report':report, 'status':status}
	return render_to_response("report_edit.html",content,context_instance = RequestContext(req))
示例#32
0
文件: Pay.py 项目: April-HJY/WaiTan
def EnterprisePay(appid,amount, openid,mchid, productCode, productType):
    try:
        price = int(amount)
        nonce_str = int(time.time())
        partner_trade_no = nonce_str
        values = {
            "amount": price,
            "check_name": "NO_CHECK",
            "desc": "withdraw",
            "mch_appid":appid,
            "mchid":mchid,
            "nonce_str":nonce_str,
            "openid": openid,
            "partner_trade_no":partner_trade_no,
            "re_user_name": "boss",
            "spbill_create_ip": "167.220.232.147"
        }
        sign =GetSign(values)
        #sign = 'CDATA[DB25A1458276B434E07CB58D00F6DADF'
        url = "https://api.mch.weixin.qq.com/mmpaymkttransfers/promotion/transfers"
        #url = "https://api.mch.weixin.qq.com/pay/unifiedorder"
        
        
        xml = """<xml>
	<mch_appid>%s</mch_appid>
	<mchid>%s</mchid>
	<nonce_str>%s</nonce_str>
    <partner_trade_no>%s</partner_trade_no>
    <openid>%s</openid>
	<check_name>NO_CHECK</check_name>
	<re_user_name>boss</re_user_name>
	<amount>%s</amount>
    <desc>withdraw</desc>
	<spbill_create_ip>167.220.232.147</spbill_create_ip>
	<sign><![CDATA[%s]]></sign>
</xml>"""%(appid, mchid, nonce_str, partner_trade_no, openid,price, sign)
        #%(price, appid, mchid, nonce_str,  openid, partner_trade_no,sign)
        Log("EnterprisePay 1 %s" % xml,"local", "0.0.0.0", "DEBUG")
        
        encodeXML = xml.encode('UTF-8').strip()
  #      encodeXML = """<?xml version="1.0" encoding="utf-8"?><xml>
#	<amount>330</amount>
#	<check_name>FORCE_CHECK</check_name>
#	<desc>withdraw</desc>
#	<mch_appid>wx0c0e0edd8eaad932</mch_appid>
#	<mchid>1415334402</mchid>
#	<nonce_str>1505378461</nonce_str>
#	<openid>oNvgX0WFITP4WESUCPbpUepqOeh0</openid>
#	<partner_trade_no>1505378461</partner_trade_no>
#	<re_user_name>boss</re_user_name>
#	<spbill_create_ip>167.220.232.147</spbill_create_ip>
#	<sign>D23586F08C1BC965099FFDE7BC45C762</sign>
#</xml>""".encode('utf-8').strip()
        certfile = '%s/%s' % (os.path.dirname(__file__),CERTFILE)
        keyfile =  '%s/%s' % (os.path.dirname(__file__),KEYFILE)
        context = ssl.create_default_context(cafile=certfile)
        #context.load_cert_chain(certfile,keyfile)
        #opener = urllib2.build_opener(urllib2.HTTPSHandler(context=context))
                
        Log("EnterprisePay 2 %s" % certfile,"local", "0.0.0.0", "DEBUG")
        #filepath = '%s/%s' % (os.path.dirname(__file__),CERTFILE)
        
        #opener = urllib2.build_opener(urllib2.HTTPCookieProcessor())
        http_header = {
                "Content-Type" : "application/x-www-form-urlencoded; charset=UTF-8",
"X-Requested-With" : "XMLHttpRequest",
"Referer" : "http://applinzi.ddianke.com/",
"Accept-Language" : "en-US,en;q=0.8,zh-Hans-CN;q=0.5,zh-Hans;q=0.3",
"Accept-Encoding" :	"gzip, deflate",
"User-Agent" : "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.3; WOW64; Trident/7.0; Touch; .NET4.0E; .NET4.0C; .NET CLR 3.5.30729; .NET CLR 2.0.50727; .NET CLR 3.0.30729; Tablet PC 2.0; InfoPath.3)",
"Host" : "applinzi.ddianke.com",
"DNT" : "1",
"Connection" : "Keep-Alive",
"Cache-Control" : "no-cache"
}       
        #sock = opener.open(url, encodeXML)
        #urllib2.install_opener(opener)
        #req = urllib2.Request(url, encodeXML )
        #response = urllib2.urlopen(req)
        
        #res = response.read()
        #Log("EnterprisePay 2 %s" % res,"local", "0.0.0.0", "DEBUG")
        
        #resURL = UploadFileFromUrl('xxx%s.xml'%nonce_str,url, encodeXML)
        
        #req = urllib2.Request(url, encodeXML)
        sock=urllib2.urlopen(url,encodeXML, cafile=certfile)
        f=sock.read()
        stream = cStringIO.StringIO(f)
        sock.close()
        bucket = Bucket("image")
        bucket.put_object('xxxaaa.xml', stream)
        return_url = bucket.generate_url('xxxaaa.xml')
        
        #Log(return_url,"local", "0.0.0.0", "DEBUG")

        xml = ET.fromstring(res)
        Log(xml,"local", "0.0.0.0", "DEBUG")
        result_code = xml.find("result_code").text
        return_msg = 'SUCCESS'
        Log("EnterprisePay 3","local", "0.0.0.0", "DEBUG")
        if result_code != 'SUCCESS':
            return_msg = xml.find("return_msg").text
            err_code = xml.find("err_code").text
            Log("EnterprisePay err_code:%s" % err_code,"local", "0.0.0.0", "DEBUG")
        else:
            b = BusinessSpending(TradeNo = partner_trade_no, Amount=amount, ProductCode = productCode, ProductType = productType, TargetOpenID = openid)
            b.save()
        Log("EnterprisePay 4","local", "0.0.0.0", "DEBUG")
        return return_msg
    except Exception, e:
        Log("EnterprisePay error:%s" % e,"local", "0.0.0.0", "DEBUG")
        return e
示例#33
0
    def upFile(self):
        # 上传文件的主处理方法
        self.oriName = self.fileobj.filename
        # 获取文件大小
        self.fileobj.stream.seek(0, 2)
        self.fileSize = self.fileobj.stream.tell()
        self.fileobj.stream.seek(0, 0)
        self.fileType = self.getFileExt()
        self.fullName = self.getFullName()
        self.filePath = self.getFilePath()
        # 检查文件大小是否超出限制
        if not self.checkSize():
            self.stateInfo = self.getStateError('ERROR_SIZE_EXCEED')
            return
        # 检查是否不允许的文件格式
        if not self.checkType():
            self.stateInfo = self.getStateError('ERROR_TYPE_NOT_ALLOWED')
            return

        log = 'oriName=%s, fileSize=%s, fileType=%s, filePath=%s, fullName=%s, fileobj=%s\n' % (
            self.oriName, self.fileSize, self.fileType, self.filePath, self.fullName, self.fileobj.filename)
        # upload to qiniu
        try:
            print('Uploader - upFile: %s' % log)
            from .storage import CzStorage
            print('Uploader - upFile: 2')
            cz_storage = CzStorage(current_user_id=self.current_user_id, use_system=False)
            print('Uploader - upFile: 3')
            self.downloadUrl = cz_storage.upload_file_object(key=self.filePath,
                                                             fileobj=self.fileobj,
                                                             file_size=self.fileSize)
            print('Uploader - upFile: 4. downloadUrl = %s' % self.downloadUrl)
            self.stateInfo = self.stateMap[0]
            return
        except:
            self.stateInfo = self.getStateError('ERROR_UPLOAD_QINIU')
            return
        # 检查路径是否存在,不存在则创建
        dirname = os.path.dirname(self.filePath)
        print('Uploader - upFile: dirname = %s ' % dirname)
        if not os.path.exists(dirname):
            try:
                os.makedirs(dirname)
            except:
                self.stateInfo = self.getStateError('ERROR_CREATE_DIR')
                return
        elif not os.access(dirname, os.W_OK):
            self.stateInfo = self.getStateError('ERROR_DIR_NOT_WRITEABLE')
            return
        # 保存文件
        try:
            self.fileobj.save(self.filePath)
            self.stateInfo = self.stateMap[0]
            return
        except:
            self.stateInfo = self.getStateError('ERROR_FILE_MOVE')
            return

        # upload to sae
        try:
            from sae.storage import Bucket
            bucket = Bucket('carloblogdomain')
            bucket.put_object(self.filePath, self.fileobj)
            self.fileobj.filename = self.filePath
            bucket.generate_url(self.fileobj)
            self.downloadUrl = 'http://carloblog-carloblogdomain.stor.sinaapp.com/' + self.filePath
            self.stateInfo = self.stateMap[0]
            return
        except:
            self.stateInfo = self.getStateError('ERROR_UPLOAD_SAE')
            return
示例#34
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)