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))
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
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 ''
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
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)
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
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
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
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)
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
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
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 ''
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
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)
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()
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)
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)
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)]
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
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)
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])
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')
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)
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")
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')
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)
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]
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