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 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 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=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 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 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 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 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 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 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 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 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 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 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 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 _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 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 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 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 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 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"请求格式不正确"
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)
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 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]
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)
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
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'<script\2>' 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))
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 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
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)