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 WriteZipFile(filename): """ 保存所有kvdb数据,压缩成zip然后aes cbc加密 """ FileBuffer = io.BytesIO() datalist = FindKVDBKeys() if datalist: zfile = zipfile.ZipFile(FileBuffer,mode='w') for data in datalist: # bytedata = (data + "tttttttt").encode(encoding="utf-8") bytedata = kv.get(str(data)) if bytedata: # print(bytedata) zfile.writestr(str(data),bytedata) zfile.close() key = config.keyDataBackUp iv = Random.new().read(AES.block_size) cipher = AES.new(key, AES.MODE_ECB) CryptIV = cipher.encrypt(iv) cipher = AES.new(key, AES.MODE_CBC, iv) bytebuffer = FileBuffer.getvalue() lendata = 16 - len(bytebuffer)%16 bytebuffer = bytebuffer + chr(lendata)*lendata #print(bytebuffer) CryptData = CryptIV + cipher.encrypt(bytebuffer) bucket = Bucket('backup') # print(FileBuffer.getvalue()) bucket.put_object(filename,CryptData) FileBuffer.close()
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 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 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 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 POST(self): context = web.input().context.encode('utf-8') taskid = web.input().taskid file_name = web.input().file_name # Only segement the title and keyword seg_content = [] lines = context.split('\r') for line in lines: tmp = line.split('\t') seg_content.append(tmp[1]) seg_content.append(tmp[2]) results = get_seg_result('\t'.join(seg_content), keep_return=True) newcontent = assemble_result(context, results['filtered_result'], taskid=taskid, file_name=file_name) # log_message('Task ' + taskid + ' is excecuted (post), result: ' + '<br /> '.join(newcontent)) # submit to server try: # payload = urllib.urlencode([('seg_result', ''.join(newcontent).encode('utf-8')), ('taskid', taskid), ]) # req = urllib2.urlopen(SUBMIT_RESULT_URL, payload) # log_message('submit task ' + str(taskid) + ' to server' + req.read()) from sae.storage import Bucket bucket = Bucket('mozillaup') bucket.put_object(file_name + '/' + str(taskid), ''.join(newcontent).encode('utf-8')) # log_message('submit task ' + str(taskid) + ' to bucket') except Exception, ex: print ex result = 'Encounter an error when submit task' + type(ex).__name__ + ' ' + str(ex.args) log_message(result)
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 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 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 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 initialize(*args): global trie, FREQ, total, min_freq, initialized if len(args)==0: dictionary = DICTIONARY else: dictionary = args[0] with DICT_LOCK: if initialized: return if trie: del trie trie = None t1 = time.time() cache_file = 'jieba.cache' default_dict = dictionary default_bucket = getattr(settings, 'STORAGE_BUCKET_NAME') bucket = Bucket(default_bucket) cache_file_content = bucket.get_object_contents(dictionary) dict_stamp = bucket.stat_object(default_dict)['timestamp'] load_from_cache_fail = True try: cache_stamp = bucket.stat_object(cache_file)['timestamp'] except: cache_exists = False else: if cache_stamp > dict_stamp: logger.debug("loading model from cache %s" % cache_file) try: cache_content = bucket.get_object_contents(cache_file) trie,FREQ,total,min_freq = marshal.loads(cache_content) load_from_cache_fail = False except: load_from_cache_fail = True if load_from_cache_fail: trie,FREQ,total = gen_trie(cache_file_content) FREQ = dict([(k,log(float(v)/total)) for k,v in FREQ.iteritems()]) #normalize min_freq = min(FREQ.itervalues()) logger.debug("dumping model to file cache %s" % cache_file) try: tmp_suffix = "."+str(random.random()) cache_file = 'dict' + tmp_suffix + '.cache' cache_file = os.path.join(tempfile.gettempdir(), cache_file) with open(cache_file,'wb') as temp_cache_file: marshal.dump((trie,FREQ,total,min_freq),temp_cache_file) if cache_exists: bucket.delete_object('jieba.cache') bucket.put_object('jieba.cache', open(cache_file, 'rb')) except: logger.error("dump cache file failed.") logger.exception("") initialized = True logger.debug("loading model cost %s seconds." % (time.time() - t1)) logger.debug("Trie has been built succesfully.")
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)
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 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 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 savePageAmazon(self, params): url = self.amazonUrlBase + self.amazonUrlMap.get(params['category']) + self.amazonUrlTail + params['id'] page = self.getPage(url) try: conn = Connection(accesskey='ym51nzx10z', secretkey='h0kxmzj2ly13jjj1m0jjly41li1wimizzz2w2m32', retries=3) spider = Bucket('amazon', conn) spider.put_object(params['category'] + '/' + params['id'], page) except Exception, e: print e
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'<script\2>' 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))
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)
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()
def edit0(request): pname = pcomment = pmood = newname = 0 from sae.storage import Bucket bucket = Bucket('abc') if request.POST: if request.POST.has_key('correct'): if request.GET.has_key('atitle'): pname = request.GET['atitle'] pn = t.objects.all() if (len(pn)!= 0): pname = pn[0].title for i in pn: i.delete() we = imagess.objects.filter(title = pname) if (len(we)!= 0): img = bucket.get_object_contents('stati/'+pname) im = Image.open(StringIO.StringIO(img)) imgout = StringIO.StringIO() im.save(imgout,"jpeg") img_data = imgout.getvalue() we[0].title = request.POST['cname']+'.jpg' newname = we[0].title if (newname != pname): ne = t(title = newname) ne.save() bucket.put_object('stati/'+newname, img_data) im = Image.open(StringIO.StringIO(img)) out = im.resize((128, 128)) imgout = StringIO.StringIO() out.save(imgout,"jpeg") img_data = imgout.getvalue() bucket.put_object('manage/'+newname, img_data) bucket.delete_object('manage/'+pname) bucket.delete_object('stati/'+pname) pname = newname we[0].comment = request.POST['ccomment'] we[0].mood = request.POST['cmood'] we[0].save() pname = request.POST['cname']+'.jpg' pcomment = request.POST['ccomment'] pmood = request.POST['cmood'] elif request.GET.has_key('atitle'): if (pname == 0): pname = request.GET['atitle'] p = t(title = pname) p.save() we = imagess.objects.filter(title = pname) if (len(we)!= 0): pcomment = we[0].comment pmood = we[0].mood if (pname!=0): pname = pname[:-4] return render_to_response('editt.html',{'pname':pname,'newname':newname, \ 'pmood': pmood, 'pcomment':pcomment},context_instance=RequestContext(request))
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 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 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 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 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 savePageExceptAmazon(self, site, id): url = getattr(self, site + 'Url') if site == 'douban': url += str( (int(id) - 1) * 10 ) else: url += str(id) page = self.getPage(url) try: conn = Connection(accesskey='ym51nzx10z', secretkey='h0kxmzj2ly13jjj1m0jjly41li1wimizzz2w2m32', retries=3) spider = Bucket(site, conn) spider.put_object(str(id), page) except Exception, e: print e
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()
def initialize(dictionary=None): global pfdict, FREQ, total, min_freq, initialized, DICTIONARY, DICT_LOCK if not dictionary: dictionary = DICTIONARY with DICT_LOCK: if initialized: return logger.debug("Building prefix dict from %s ..." % X_CACHE_FILE) t1 = time.time() cache_file = X_CACHE_FILE if settings.DEBUG: bucket = Bucket('xkong1946') else: bucket = Bucket() dict_stamp = bucket.stat_object(dictionary)['timestamp'] cache_stamp = bucket.stat_object(cache_file)['timestamp'] load_from_cache_fail = True if cache_stamp > dict_stamp: logger.debug("Loading model from cache %s" % cache_file) try: cf = bucket.get_object_contents(cache_file) pfdict, FREQ, total = marshal.loads(cf) # prevent conflict with old version load_from_cache_fail = not isinstance(pfdict, set) except Exception, e: print e load_from_cache_fail = True if load_from_cache_fail: dict_file_content = bucket.get_object_contents(dictionary) pfdict, FREQ, total = gen_pfdict(dict_file_content) logger.debug("Dumping model to file cache %s" % cache_file) try: import StringIO fd = StringIO.StringIO() fd.write(marshal.dumps((pfdict, FREQ, total))) if bucket.stat_object(X_CACHE_FILE): bucket.delete_object(X_CACHE_FILE) bucket.put_object(X_CACHE_FILE, fd.getvalue()) except Exception: logger.exception("Dump cache file failed.") initialized = True logger.debug("Loading model cost %s seconds." % (time.time() - t1)) logger.debug("Prefix dict has been built succesfully.")
def data_backup(): """backup all data into sae storage """ date = time.strftime("%Y_%m_%d") filename = 'mydata_' + date + '.json' kv = sae.kvdb.Client() myData = dict(kv.get_by_prefix('')) kv.disconnect_all() bucket = Bucket('t') bucket.put() myDataJson = json.dumps(myData) bucket.put_object(filename, myDataJson) return None
def save_file(self, filename, imagebinary): if 'sae' in modules: from sae.storage import Bucket fpath = r'http://oerp-oerp.stor.sinaapp.com/'+filename # 完整的路径 session = getSession() img = Images(filename, fpath) session.add(img) session.commit() bucket = Bucket('oerp') # 从云平台拿到一个Bucket容器 bucket.put_object(filename, imagebinary) # 存取一个文件到SAE 云平台 bucket.put_object(path,imagebinary) self.set_header('Content-Type', 'text/xml; charset=utf-8') self.write('<image src="%s"/>' % fpath) else: import io # 引入IO包 with io.open('e:\upload\/'+filename, 'wb') as file: file.write(imagebinary)
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 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 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)
def action(self,num,count): if num not in self.his: self.visit('http://tieba.baidu.com/p/'+num) myMatch = re.search(r'<title>(.*?)</title>', self.content, re.S) title = u'暂无标题' +str(count) if myMatch: title=myMatch.group(1) else: print u'爬虫报告:无法加载文章标题!' bucket = Bucket('spider') bucket.put_object(num+'.html', self.content,metadata={'title':title}) time.sleep(0.2) del(self.number[0]) else: del(self.number[0]) print "exit thread"
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]
def check_message(message): kv = sae.kvdb.Client() if message == 'backup': bucket = Bucket('backup') bucket.put() data_dict = dict(kv.get_by_prefix('')) data_dict = json.dumps(data_dict) bucket.put_object('database.json', data_dict) return "备份成功!" elif message == 'ca': keys = kv.getkeys_by_prefix('') for key in keys: kv.delete(key) return "Database is empty!" elif '.' in message: funs, values = message.split('.',1) if funs == 'd': key = str(values) content = kv.get(key) kv.delete(key) return "%s\n This item has beem deleted." %content elif funs == 'dp': prefix = values keys = kv.getkeys_by_prefix(prefix) for key in keys: kv.delete(key) return "%s\n All the keys' item have been deleted." %keys elif funs == 'get': prefix = str(values) content = dict(kv.get_by_prefix(prefix)) return '''They are: %s '''% content elif funs == 'du': user_email = str(values) kv.delete(user_email) emails = kv.get('emailset') emails = [x for x in emails if not x == user_email] kv.set ('emailset',emails) number = kv.get('usersnumber') - 1 kv.replace('usersnumber', number) return """用户%s已经删除"""%user_email else: return "Sorry, Please check your input..." kv.disconnect_all()
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 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')
class SaeStorageSaver: def __init__(self, key): self.bucket = Bucket(key) def StoreTxtFile(self, path, content): self.bucket.put_object(path, content) def StoreBinFile(self, path, content): self.bucket.put_object(path, content) def GetObjectByPath(self, path): return self.bucket.get_object_contents(path) def GetItemUnder(self, path): return [x for x in self.bucket.list(path)] def GetBackupList(self): return self.GetItemUnder(g_backup_path) def DeleteObject(self, obj): self.bucket.delete_object(obj)
def start(request): url = 0 from sae.storage import Bucket bucket = Bucket('abc') if request.POST: if request.POST.has_key('save'): post = request.POST if request.FILES: f = request.FILES['file'] new_img = imagess(picture = f, comment = post['writecomment'], mood = post['writemood'],\ title = str(f),lat = 0,lon = 0) new_img.save() img = bucket.get_object_contents('stati/'+f.name) im = Image.open(StringIO.StringIO(img)) out = im.resize((128, 128)) imgout = StringIO.StringIO() out.save(imgout,"jpeg") img_data = imgout.getvalue() bucket.put_object('manage/'+f.name, img_data) exif = get_exif_data(img) if exif.has_key('GPSInfo'): w1 = exif['GPSInfo'][2][0][0] w2 = exif['GPSInfo'][2][1][0] w3 = exif['GPSInfo'][2][2][0]*1.0/100 lat = w1+w2*1.0/60 + w3*1.0/60*1.0/60 j1 = exif['GPSInfo'][4][0][0] j2 = exif['GPSInfo'][4][1][0] j3 = exif['GPSInfo'][4][2][0]*1.0/100 lon = j1+j2*1.0/60 + j3*1.0/60*1.0/60 new = imagess.objects.filter(title = f.name) if (len(new) != 0): new[0].lat = lat new[0].lon = lon new[0].save() return render_to_response('start.html',\ context_instance=RequestContext(request))
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 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 saveChange(request, ID): userid = request.session.get('userid', '') if userid == '': return HttpResponseRedirect('/index') title = request.POST['title'] text = request.POST['text'] textNoHtml = re.sub('<[^>]*?>', '', text) if len(textNoHtml) < 120: shortContent = textNoHtml + '......' else: shortContent = textNoHtml[0:120] + '......' #保存更新之后的文章标题,内容和概述。 passageObj = Passage.objects.get(id=int(ID)) passageObj.Title = title passageObj.ShortContent = shortContent passageObj.LongContent = text passageObj.save() #picSrcLs获取文中所有图片的路径 picSrcLs = re.findall('<img src="(.*?)">', text) #picNameLs获取文中所有图片的文件名 picNameLs = [] for pss in picSrcLs: if 'pictures' in pss: picNameLs.append(pss[49:]) else: continue #picSavedObjLs存储所有已保存的图片数据。 picSavedObjLs = Picture.objects.filter(PassageID=passageObj) #picStayLs用于保存仍然存在的图片名称。 picStayLs = [] #以下循环用于判断:图片表中有没有图片在编辑中被删除。 for picObj in picSavedObjLs: if picObj.OriginalImageName in picNameLs: picStayLs.append(picObj.OriginalImageName) continue else: bucket = Bucket('media') bucket.delete_object(picObj.OriginalImagePath.name) bucket.delete_object(picObj.CompressedImagePath.name) #os.remove(os.path.join(settings.MEDIA_ROOT, picObj.OriginalImagePath.name)) #os.remove(os.path.join(settings.MEDIA_ROOT, picObj.CompressedImagePath.name)) picObj.delete() #删除picNameLs已存在Picture表中的图片名称,剩下的图片都在PictureCache图片缓存表中。 for pic in picStayLs: picNameLs.remove(pic) for pn in picNameLs: cpobj = CachePicture.objects.get(ImageName=pn) #print 'sss',cpobj.ImagePath.name bucket = Bucket('media') im = Image.open( cStringIO.StringIO(bucket.get_object_contents( cpobj.ImagePath.name))) #im = Image.open(os.path.join(settings.MEDIA_ROOT, cpobj.ImagePath.name)) w, h = im.size if w > h: im.thumbnail((66, (66 * h) // w)) else: im.thumbnail(((w * 74) // h, 74)) #savepath = os.path.join(settings.MEDIA_ROOT, 'compressedpictures' ,'thumnail'+cpobj.ImageName) savepath = os.path.join('compressedpictures', 'thumnail' + cpobj.ImageName) fm = cpobj.ImageName.split('.')[1] if fm.lower() == 'jpg': fm = 'jpeg' buf = cStringIO.StringIO() im.save(buf, fm) img_data = buf.getvalue() bucket.put_object(savepath, img_data) #im.save(savepath, fm) picObj = Picture() picObj.PassageID = passageObj picObj.OriginalImageName = pn picObj.OriginalImagePath = cpobj.ImagePath picObj.CompressedImageName = 'thumnail' + cpobj.ImageName picObj.CompressedImagePath.name = os.path.join( 'compressedpictures', 'thumnail' + cpobj.ImageName) picObj.save() cpobj.delete() buf.close() #删除缓存表中的数据以及对应的图片。 username = User.objects.get(id=userid).UserName deleteCachePicLs = CachePicture.objects.filter(UserName=username) if len(deleteCachePicLs) > 0: bucket = Bucket('media') for pic in deleteCachePicLs: #os.remove(os.path.join(settings.MEDIA_ROOT, pic.ImagePath.name)) bucket.delete_object(pic.ImagePath.name) pic.delete() return HttpResponseRedirect('/passage/' + ID)
class SAEStorageKVDB(object): ''' A bridge for pyutils kvdb wrapper to access sae storage like a kvdb. e.g. from pyutils import KVDBWrapper from sae_storage import SAEStorageKVDB kvclient = KVDBWrapper(SAEStorageKVDB, bucket='mybucket', accesskey='xxx', secretkey='yyy', account='myapp', prefix='PRE:', ...) kvclient.set(key,value) kvclient.get(key) ''' 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 info(self): return self.kv.stat() def get(self, key, **kwargs): k = self.prefix + key return self.kv.get_object(k, **kwargs) def set(self, key, value, **kwargs): k = self.prefix + key return self.kv.put_object(k, value, **kwargs) def delete(self, key, **kwargs): k = self.prefix + key return self.kv.delete_object(k, **kwargs) def exist(self, key, **kwargs): k = self.prefix + key rc = False st = self.kv.stat_object(k) if st: rc = True return rc def scan(self, cursor=None, count=100, **kwargs): ''' Retrieve keys by given arguments :param kwargs: 'count' for retrieve count; 'cursor' is the key for next time retrieve :return: ''' return self.kv.c(prefix=self.prefix, marker=cursor, limit=count, **kwargs) def scanv(self, cursor=None, count=100, **kwargs): ''' Retrieve key-values by given arguments :param kwargs: 'count' for retrieve count; 'cursor' is the key for next time retrieve :return: ''' return self.kv.list(prefix=self.prefix, marker=cursor, limit=count, **kwargs) def mget(self, keys, **kwargs): for key in keys: k = self.prefix + key val = self.get(k, **kwargs) yield val
class SaeStorage(Storage): """实现存储在SAE上的Storage """ def __init__(self, bucket_name, path): self.bucket_name = bucket_name self.folder = path self._bucket = Bucket(bucket_name) self.locks = {} def __repr__(self): return "%s(%r)(%r)" % (self.__class__.__name__, self.bucket_name, self.folder) def create(self): return self def destroy(self): # Remove all files self.clean() # REMOVE locks del self.locks def create_file(self, name, **kwargs): def onclose_fn(sfile): self._bucket.put_object(self._fpath(name), sfile.file.getvalue()) f = StructFile(BytesIO(), name=name, onclose=onclose_fn) return f def open_file(self, name, **kwargs): if self._bucket.stat_object(self._fpath(name)) is None: raise NameError(name) content = self._bucket.get_object_contents(self._fpath(name)) def onclose_fn(sfile): self._bucket.put_object(self._fpath(name), sfile.file.getvalue()) return StructFile(BytesIO(content), name=name, onclose=onclose_fn) def _fpath(self, fname): return os.path.join(self.folder, fname) def clean(self): files = self.list() for fname in files: self._bucket.delete_object(self._fpath(fname)) def list(self): file_generate = self._bucket.list(path=self._fpath("")) file_names = [] for f in file_generate: file_names.append(f['name'][len(self.folder) + 1:]) return file_names def file_exists(self, name): return name in self.list() def file_modified(self, name): return self._bucket.stat_object(self._fpath(name))\ .get('last_modified', '') def file_length(self, name): return int(self._bucket.stat_object(self._fpath(name))['bytes']) def delete_file(self, name): self._bucket.delete_object(self._fpath(name)) def rename_file(self, name, newname, safe=False): if name not in self.list(): raise NameError(name) if safe and newname in self.list(): raise NameError("File %r exists" % newname) content = self._bucket.get_object_contents(self._fpath(name)) self._bucket.delete_object(self._fpath(name)) self._bucket.put_object(self._fpath(newname), content) def lock(self, name): if name not in self.locks: self.locks[name] = Lock() return self.locks[name] def temp_storage(self, name=None): name = name or "%s.tmp" % random_name() path = os.path.join(self.folder, name) tempstore = SaeStorage(self.bucket_name, path) return tempstore.create()
def lottery_confirmed(request): try: micro_id64 = request.POST['micro_id'] micro_id = int(base64.b64decode(micro_id64)) hash_id = hashlib.sha1(str(micro_id)).hexdigest() try: winner = Lottery.objects.get(hash_id=hash_id) if request.POST['phone_number']: #check phone number format phone_number = request.POST['phone_number'] if check_input(str(phone_number), 'phoneNumber'): if winner.phone_number != None: return HttpResponse("该奖品已经有申奖号码了") winner.phone_number = phone_number winner.save() ##update lottery_remain_information debug = not environ.get("APP_NAME", "") # #read present file if debug: jsonfile = open(JSON_FILE_PATH) data = json.load(jsonfile) else: bucket = Bucket("nkumstc") data = json.loads( bucket.get_object_contents( JSON_SERVER_OBJECT_NAME)) special_read = data["special"] first_read = data["first"] second_read = data["second"] third_read = data["third"] fourth_read = data["fourth"] fifth_read = data["fifth"] rate = data["rate"] #update if winner.present_level == "special": special_read = special_read - 1 elif winner.present_level == "first": first_read = first_read - 1 elif winner.present_level == "second": second_read = second_read - 1 elif winner.present_level == "third": third_read = third_read - 1 elif winner.present_level == "fourth": fourth_read = fourth_read - 1 elif winner.present_level == "fifth": fifth_read = fifth_read - 1 else: return HttpResponse("bug!") if debug: # write to present file jsonfile = open(JSON_FILE_PATH, "w") jsonfile.write( json.dumps({ "special": special_read, "first": first_read, "second": second_read, "third": third_read, "rate": rate, "fourth": fourth_read, "fifth": fifth_read })) else: bucket = Bucket("nkumstc") content = { "special": special_read, "first": first_read, "second": second_read, "third": third_read, "rate": rate, "fourth": fourth_read, "fifth": fifth_read } bucket.put_object(JSON_SERVER_OBJECT_NAME, json.dumps(content)) else: award_notice = get_template( 'lottery_beautyOfCoding/award_confirm.html') information = { 'level': winner.present_level, 'micro_id': micro_id64, 'no_phoneNumber': True } award_noticeHtml = award_notice.render( Context(information)) return HttpResponse(award_noticeHtml) else: award_notice = get_template( 'lottery_beautyOfCoding/award_confirm.html') information = { 'level': winner.present_level, 'micro_id': micro_id64, 'no_phoneNumber': True } award_noticeHtml = award_notice.render(Context(information)) return HttpResponse(award_noticeHtml) except: return HttpResponse("同学别刷票了 (╯▔皿▔)╯") except: return HttpResponse("您可能使用的是windows手机,请换成其他手机或使用电脑浏览器抽奖,如有问题请于俱乐部联系") #final result return award_confirmed = get_template( 'lottery_beautyOfCoding/award_confirmed.html') award_confirmedHtml = award_confirmed.render(Context()) return HttpResponse(award_confirmedHtml)
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
def saveWritting(request): #blog 应用中最重要的试图函数。 #包括以下主要功能:1,保存博文;2,生成缩略图;3,把缓存表的图片信息移到源图表,然后清空缓存表。 userid = request.session.get('userid', '') if userid == '': return HttpResponseRedirect('/index') title = request.POST['title'] text = request.POST['text'] textNoHtml = re.sub('<[^>]*?>', '', text) #print len(textNoHtml) #print text #print textNoHtml if len(textNoHtml) < 120: shortContent = textNoHtml + '......' else: shortContent = textNoHtml[0:120] + '......' nt = datetime.now() #以下是保存博文数据到数据表中。 passageObj = Passage() writerObj = User.objects.get(id=userid) passageObj.UserID = writerObj passageObj.Title = title passageObj.Time = nt passageObj.ShortContent = shortContent passageObj.LongContent = text passageObj.save() #以下是把所有缓存表的图片去处移到源图表,并生成压缩图。 picSrcLs = re.findall('<img src="(.*?)">', text) picNameLs = [] for pss in picSrcLs: if 'pictures' in pss: picNameLs.append(pss[49:]) else: continue #此变量用于保存文章的ID ID = 0 passageObj = Passage.objects.get(UserID=writerObj, Time=nt) ID = passageObj.id for pn in picNameLs: cpobj = CachePicture.objects.get(ImageName=pn) #print 'sss',cpobj.ImagePath.name bucket = Bucket('media') im = Image.open( cStringIO.StringIO(bucket.get_object_contents( cpobj.ImagePath.name))) #im = Image.open(os.path.join(settings.MEDIA_ROOT, cpobj.ImagePath.name)) w, h = im.size if w > h: im.thumbnail((66, (66 * h) // w)) else: im.thumbnail(((w * 74) // h, 74)) #savepath = os.path.join(settings.MEDIA_ROOT, 'compressedpictures' ,'thumnail'+cpobj.ImageName) savepath = os.path.join('compressedpictures', 'thumnail' + cpobj.ImageName) fm = cpobj.ImageName.split('.')[1] if fm.lower() == 'jpg': fm = 'jpeg' buf = cStringIO.StringIO() im.save(buf, fm) img_data = buf.getvalue() bucket.put_object(savepath, img_data) #im.save(savepath, fm) picObj = Picture() picObj.PassageID = passageObj picObj.OriginalImageName = pn picObj.OriginalImagePath = cpobj.ImagePath picObj.CompressedImageName = 'thumnail' + cpobj.ImageName picObj.CompressedImagePath.name = os.path.join( 'compressedpictures', 'thumnail' + cpobj.ImageName) picObj.save() cpobj.delete() buf.close() #删除缓存表中的数据以及对应的图片。 deleteCachePicLs = CachePicture.objects.filter(UserName=writerObj.UserName) if len(deleteCachePicLs) > 0: bucket = Bucket('media') for pic in deleteCachePicLs: #os.remove(os.path.join(settings.MEDIA_ROOT, pic.ImagePath.name)) bucket.delete_object(pic.ImagePath.name) pic.delete() #以下到return代码前的代码用于文章数量增加1 dataCountObjLs = DataCount.objects.all() if len(dataCountObjLs) == 0: dataCountObj = DataCount() dataCountObj.PassageCount = 1 dataCountObj.save() else: dataCountObj = dataCountObjLs[0] dataCountObj.PassageCount += 1 print dataCountObj.PassageCount dataCountObj.save() #return HttpResponseRedirect('/index') return HttpResponseRedirect('/passage/' + str(ID))
def write_storage(content): bucket = Bucket(BUCKET_NAME) bucket.delete_object(TARGET_FILE) bucket.put_object(TARGET_FILE, content)