def upload(): try: photo = request.files.get('photo') user_id = request.form.get('user_id') icon_type = int(request.form.get('icon_type')) token = request.form.get('token') # 提取文件后缀 suffix = os.path.splitext(photo.filename)[1] # 生成随机文件名 filename = random_string() + suffix photos.save(photo, name=filename) img_url = photos.url(filename) img_url = img_url.replace('_uploads', 'static') img_url = img_url.replace('photos', 'upload') # 判断数据库是否有该用户 user = Icon.query.filter_by(user_id=user_id).first() if user: # 删除原来的头像 os.remove(os.path.join(current_app.config['UPLOADED_PHOTOS_DEST'], user.icon)) user.icon = filename user.confirmed = 1 else: u = Icon(user_id=user_id, icon_type=icon_type, icon=filename, token=token) db.session.add(u) data = {"url": img_url} data = json.dumps(data) return data except Exception as e: print(e) return ''
def change_icon(): form = IconForm() if form.validate_on_submit(): # 生成随机的文件名 suffix = os.path.splitext(form.icon.data.filename)[1] name = rand_str() + suffix # 保存上传头像 photos.save(form.icon.data, name=name) # 生成缩略图 pathname = os.path.join( os.path.join(current_app.config['UPLOADED_PHOTOS_DEST'], name)) img = Image.open(pathname) img.thumbnail((64, 64)) img.save(pathname) # 删除原有头像 if current_user.icon != 'default.jpg': # 第一次更换头像不删除,除此之外原来的头像都要删除 os.remove( os.path.join(current_app.config['UPLOADED_PHOTOS_DEST'], current_user.icon)) # 更新新的头像名至数据库 current_user.icon = name db.session.add(current_user) flash('头像已更换') return render_template('user/change_icon.html', form=form)
def icon(): form = UploadForm() if form.validate_on_submit(): # 提取后缀 suffix = os.path.splitext(form.icon.data.filename)[1] # 生成随机文件名 filename = random_string() + suffix # 保存上传文件 photos.save(form.icon.data, name=filename) # 拼接完整文件路径名 pathname = os.path.join(current_app.config['UPLOADED_PHOTOS_DEST'], filename) # 生成缩略图 img = Image.open(pathname) # 设置尺寸 img.thumbnail((64, 64)) # 覆盖保存图片 img.save(pathname) # 删除原来的头像(默认头像除外) if current_user.icon != 'default.jpg': os.remove(os.path.join(current_app.config['UPLOADED_PHOTOS_DEST'], current_user.icon)) # 保存到数据库 current_user.icon = filename db.session.add(current_user) # 获取url img_url = url_for('static', filename='upload/'+current_user.icon) return render_template('user/icon.html', form=form, img_url=img_url)
def change_icon(): form = Change_iconForm() if form.validate_on_submit(): # 获取文件后缀 suffix = os.path.splitext(form.icon.data.filename)[1] # 生成文件名 filename = random_string() + suffix # 保存图片 photos.save(form.icon.data, name=filename) # 文件保存路径 filepath = os.path.join(current_app.config['UPLOADED_PHOTOS_DEST'], filename) # 生成缩略图 img = Image.open(filepath) img.thumbnail((200, 200)) img.save(filepath) # 删除原来的图片 if current_user.icon != 'default.jpg': os.remove( os.path.join(current_app.config['UPLOADED_PHOTOS_DEST'], current_user.icon)) # 保存修改至数据库 current_user.icon = filename db.session.add(current_user) flash('头像已保存') return redirect(url_for('user.change_icon')) img_url = photos.url(current_user.icon) return render_template('user/change_icon.html', form=form, img_url=img_url)
def icon(): form = UploadForm() if form.validate_on_submit(): # 提取上传文件信息 photo = form.photo.data # 提取文件后缀 suffix = os.path.splitext(photo.filename)[1] # 生成随机文件名 filename = random_string() + suffix # 保存上传文件 photos.save(photo, name=filename) # 拼接文件路径名 pathname = os.path.join(current_app.config['UPLOADED_PHOTOS_DEST'], filename) # 打开文件 img = Image.open(pathname) # 设置尺寸 img.thumbnail((64, 64)) # 重新保存 img.save(pathname) # 删除原来的头像文件(默认头像除外) if current_user.icon != 'default.jpg': os.remove( os.path.join(current_app.config['UPLOADED_PHOTOS_DEST'], current_user.icon)) # 保存头像 current_user.icon = filename db.session.add(current_user) flash('头像修改成功') img_url = url_for('static', filename='upload/' + current_user.icon) return render_template('user/icon.html', form=form, img_url=img_url)
def modify_form(item_id): form = UploadForm() item = Item.query.filter_by(id=item_id).first() if form.validate_on_submit(): if form.pic.data: suffix = os.path.splitext(form.pic.data.filename)[1] filename = random_string() + suffix photos.save(form.pic.data, name=filename) item.pic = filename category = Category.query.filter_by(name=form.category.data).first() item.item_name = form.item_name.data item.status = form.status.data item.location = form.location.data item.time = form.time.data item.category_id = category.id item.description = form.description.data change = Change(changer_id=current_user.id, method='modify', item_id=item.id, item_name=item.item_name, content='change a ' + form.status.data + ' item named ' + form.item_name.data) db.session.add(change) if form.store_location.data != 'No selection': storage = Storage.query.filter_by( location_name=form.store_location.data).first() item.store_location_id = storage.id db.session.commit() return 'success' return render_template('upload_form.html', form=form, current_user=current_user)
def icon(): form = IconForm() # 取出对象 user = current_user._get_current_object() # 判断数据是否合法 if form.validate_on_submit(): # 生成随机文件名 suffix = os.path.splitext(form.icon.data.filename)[1] filename = random_str() + suffix # 保存文件 photos.save(form.icon.data, name=filename) # 生成文件名的绝对路径 pathname = os.path.join(current_app.config['UPLOADED_PHOTOS_DEST'], filename) # 生成缩略图 image = Image.open(pathname) # 修改大小 image.thumbnail((128, 128)) image.save(pathname) # 删除原头像 if user.icon != 'default.jpg': os.remove( os.path.join(current_app.config['UPLOADED_PHOTOS_DEST'], user.icon)) # 赋值给icon 属性 user.icon = filename db.session.add(user) # 提示用户修改成功 flash('头像修改成功') # 返回URL 路径 img_url = photos.url(user.icon) return render_template('users/icon.html', form=form, img_url=img_url)
def change_icon(): form = UploadForm() if form.validate_on_submit(): # 获取后缀 suffix = os.path.splitext(form.icon.data.filename)[1] # 随机文件名 filename = random_string() + suffix photos.save(form.icon.data, name=filename) # 生成缩略图 pathname = os.path.join(current_app.config['UPLOADED_PHOTOS_DEST'], filename) img = Image.open(pathname) img.thumbnail((128, 128)) img.save(pathname) # 删除原来的头像(不是默认头像时才需要删除) if current_user.icon != 'default.jpeg': os.remove( os.path.join(current_app.config['UPLOADED_PHOTOS_DEST'], current_user.icon)) # 保存到数据库 current_user.icon = filename db.session.add(current_user) return redirect(url_for('user.change_icon')) img_url = photos.url(current_user.icon) return render_template('user/change_icon.html', form=form, img_url=img_url)
def icon(): form = IconForm() if form.validate_on_submit(): # 获取上传的图片 suffix = os.path.splitext(form.icon.data.filename)[1] # 生成随机文件名 filename = random_string() + suffix # 保存文件 photos.save(form.icon.data, name=filename) # 生成缩略图 pathname = os.path.join(current_app.config['UPLOADED_PHOTOS_DEST'], filename) img = Image.open(pathname) # 处理 img.thumbnail((128, 128)) # 再保存 img.save(pathname) # 之前老的图片要删除,除了默认图片 if current_user.icon != 'default.jpg': os.remove( os.path.join(current_app.config['UPLOADED_PHOTOS_DEST'], current_user.icon)) # 把文件名存到数据库 current_user.icon = filename db.session.add(current_user) flash('头像上传成功') img_url = photos.url(current_user.icon) return render_template('user/icon.html', form=form, img_url=img_url)
def change_icon(): form = IconForm() if form.validate_on_submit(): # 获取上传文件的后缀 suffix = os.path.splitext(form.icon.data.filename)[1] # 生成随机的文件名 name = rand_str() + suffix photos.save(form.icon.data, name=name) # 生成固定大小的缩略图 pathname = os.path.join(current_app.config['UPLOADED_PHOTOS_DEST'], name) # 打开文件 img = Image.open(pathname) # 设置尺寸 img.thumbnail((256, 256)) # 保存缩略图 img.save(pathname) # 删除原来的头像,default.jpg除外 if current_user.icon != 'default.jpg': os.remove( os.path.join(current_app.config['UPLOADED_PHOTOS_DEST'], current_user.icon)) # 保存到数据库中 current_user.icon = name db.session.add(current_user) flash('头像已修改') return render_template('user/change_icon.html', form=form)
def icon(): form = IconForm() if form.validate_on_submit(): #生成随机的文件名 suffix = os.path.splitext(form.icon.data.filename)[1] filename = random_string() + suffix #保存文件 photos.save(form.icon.data, name=filename) #拼接完整的路径名 pathname = os.path.join(current_app.config['UPLOADED_PHOTOS_DEST'], filename) #生成缩略图 img = Image.open(pathname) #设置图片大小 img.thumbnail((128, 128)) #重新保存 img.save(pathname) #删除原来的头像,默认的除外 if current_user.icon != 'default.jpg': os.remove( os.path.join(current_app.config['UPLOADED_PHOTOS_DEST'], current_user.icon)) #保存到数据库 current_user.icon = filename db.session.add(current_user) flash('头像已修改') #获取头像的url img_url = photos.url(current_user.icon) return render_template('user/icon.html', form=form, img_url=img_url)
def modify_icon_form(): form = IconForm() user = User.query.filter_by(id=current_user.id).first() if form.validate_on_submit(): suffix = os.path.splitext(form.icon.data.filename)[1] filename = random_string() + suffix photos.save(form.icon.data, name=filename) user.icon = 'uploads/' + filename db.session.commit() return 'success' return render_template('upload_form.html', form=form, current_user=current_user)
def upload_form(): form = UploadForm() if form.validate_on_submit(): if not form.pic.data: flash('Please select the file') else: suffix = os.path.splitext(form.pic.data.filename)[1] filename = random_string() + suffix photos.save(form.pic.data, name=filename) category = Category.query.filter_by( name=form.category.data).first() if form.store_location.data == 'No selection': item = Item(item_name=form.item_name.data, status=form.status.data, location=form.location.data, time=form.time.data, category_id=category.id, description=form.description.data, pic=filename, uploader_id=current_user.id) else: storage = Storage.query.filter_by( location_name=form.store_location.data).first() item = Item(item_name=form.item_name.data, status=form.status.data, location=form.location.data, time=form.time.data, category_id=category.id, description=form.description.data, pic=filename, uploader_id=current_user.id, store_location_id=storage.id) db.session.add(item) item_change = Item.query.filter_by( item_name=form.item_name.data, time=form.time.data, location=form.location.data, description=form.description.data).first() change = Change(changer_id=current_user.id, method='upload', item_id=item_change.id, item_name=item_change.item_name, content='create a ' + form.status.data + ' item named ' + form.item_name.data) db.session.add(change) db.session.commit() return 'success' return render_template('upload_form.html', form=form, current_user=current_user)
def register(): form = Register() if form.validate_on_submit(): verify_code = form.verify_code.data username = User.query.filter_by(username=form.username.data).first() email = User.query.filter_by(email=form.email.data).first() print(verify_code) if username: flash('该账户已经注册') if email: flash('该邮箱已经绑定,请换一个') if re.compile(verify_code, re.I).findall(session['verifyCode']): flash('验证码正确') # 获取上传文件的后缀 suffix = os.path.splitext(form.icon.data.filename)[1] # 生成新的头像名字 name = randStr() + suffix photos.save(form.icon.data, name=name) # 在指定路径生成文件 pathName = os.path.join(current_app.config['UPLOADED_PHOTOS_DEST'], name) # 打开文件 img = Image.open(pathName) # 设置尺寸 img.thumbnail((64, 64)) # 保存缩略图 img.save(pathName) # 创建用户 u = User(username=form.username.data, password=form.password.data, email=form.email.data, icon=name) # 保存数据到数据库 db.session.add(u) # 手动提交到数据库 db.session.commit() # 发送激活邮件到邮箱 token = u.generate_activate_token() send_mail(form.email.data, '账户激活', 'email/activate', token=token, username=form.username.data) flash('激活邮件已发送,请激活') return redirect(url_for('main.index')) else: flash('验证码错误') return render_template('user/register.html', form=form)
def icon(): form = IconForm() if form.validate_on_submit(): suffix = os.path.splitext(form.photo.data.filename)[1] name = str(current_user.id) + random_str() + suffix photos.save(form.photo.data,name=name) pathname = os.path.join(current_app.config['UPLOADED_PHOTOS_DEST'],name) img = Image.open(pathname) img.thumbnail((64,64)) img.save(pathname) if current_user.icon!='1.jpg': os.remove(os.path.join(current_app.config['UPLOADED_PHOTOS_DEST'],current_user.icon)) current_user.icon = name db.session.add(current_user) flash('图像上传成功') return render_template('user/icon.html',form=form)
def product_upload(): # print current_user.is_authenticated() # if not current_user.is_authenticated(): # return redirect(url_for('user.signin')) product_code = request.args.get('domain_code') product = ProcutInfo.query.filter(ProcutInfo.product_code == product_code).first() if product: product_form = ProductForm(product_code=product.product_code, product_name=product.product_name, detail_info=product.detail_info, guide_price=product.guide_price, introduce=product.introduce, pack_list=product.pack_list, phone_num=product.phone_num, csrf_enabled=False) form = product_form images= product.images else: form = ProductForm(request.values, csrf_enabled=False) images =None if form.validate_on_submit(): product = ProcutInfo() form.populate_obj(product) file = request.files['product_image'] filename = str(uuid.uuid4()) + '.jpg' photos.save(file, name=filename) url = photos.url(filename) image = ImageInfo() image.name = filename image.url = url product.images = [image] p = ProcutInfo.query.filter(ProcutInfo.product_code == product.product_code).first() if p is None: db.session.add(product) else: db.session.merge(product) fpath = photos.path(filename) f = open(fpath, 'rb') fdata = base64.b64encode(f.read()) rsp = upload_product_info(product, filename, fdata) print rsp if rsp[0] == 1: flash(u'资料上传成功', 'success') return redirect(url_for('site.index')) else: pass else: return render_template('/product/info_upload.html', form=form,images=images)
def pzl(): print('从数据库中加载') form = PostsForm() next = request.args.get('next') if next: form.content.data = next if form.validate_on_submit(): # 判断用户是否登录 if current_user.is_authenticated: suffix = os.path.splitext(form.pic.data.filename)[1] filename = random_string() + suffix # 保存文件print (form.pic.data) print(form.pic.data) photos.save(form.pic.data, name=filename) # 拼接完整的路径名 pathname = os.path.join(current_app.config['UPLOADED_PHOTOS_DEST'], filename) # 生成缩略图 img = Image.open(pathname) # 重新设置尺寸 img.thumbnail((128, 128)) # 重新保存 img.save(pathname) p = Post(content=form.content.data, category=form.category.data, users_id=current_user.id, pic=filename) db.session.add(p) form.content.data = '' flash('发布成功') return redirect(url_for('main.pzl')) else: flash('登录后才能发布微博哦') return redirect(url_for('users.login', next=form.content.data)) # posts = Post.query.filter_by(rid=0).order_by(Post.timestamp.desc()).all() page = request.args.get('page', 1, type=int) pagination = Post.query.filter_by(rid=0).\ order_by(Post.timestamp.desc()).paginate(page, per_page=3,error_out=False) posts = pagination.items return render_template('common/index.html', form=form, posts=posts, pagination=pagination)
def addarticle(): ''' 添加文章 ''' if request.method == 'GET': categorylist = Category.query.all() return render_template('dandan_manage/addarticle.html', categorylist=categorylist) # 获取添加的文章信息(纯文本部分) # 文章标题 title = request.form.get('title') # 文章简介 describe = request.form.get('describe') # 文章分类 category = Category.query.get(request.form.get('category')) # 文章标签 tag = request.form.get('tag').split(',') # 通过逗号切割 # 文章是否显示 if request.form.get('isshow') == 'on': isshow = True else: isshow = False # 文章正文文本 content = request.form.get('user-intro') # 文章封面图片 # 获取后缀 suffix = os.path.splitext(request.files['coverlink'].filename)[-1] # 合成图片名 filename = gen_rnd_filename() + suffix # 保存图片 # piclink即是封面图片的名字 coverlink = photos.save(request.files['coverlink'], name=filename) # 保存文章到数据库 # 创建文章对象 article = Article(title=title, summary=describe, content=content, coverlink=coverlink, isshow=isshow) # 标签处理(主要是判断是否已经存在) for i in range(len(tag)): temp = i # 临时变量记录下标 i = Tag.query.filter_by(name=tag[temp]).first() # 判断标签是否已经存在 if i: # 如果标签已经存在 article.tags.append(i) # 文章-标签 关联 else: i = Tag(name=tag[temp]) # 如果标签不存在,则创建对象 article.tags.append(i) # 文章-标签 关联 category.articles.append(article) # 文章-类别 关联 db.session.add(article) # 添加进会话 flash('文章添加成功!') return redirect( url_for('aboutadmin.addarticle')) # 文章添加成功,返回添加页面,继续添加下一篇文章
def change_icon(): form = UploadForm() if form.validate(): suffix = os.path.splitext(form.icon.data.filename)[1] filename = random_string()+suffix photos.save(form.icon.data,name=filename) pathname = os.path.join(current_app.config['UPLOADED_PHOTOS_DEST'],filename) img = Image.open(pathname) img.thumbnail((128,128)) img.save(pathname) if current_user.icon != 'default.jpg': os.remove(os.path.join(current_app.config['UPLOADED_PHOTOS_DEST'],current_user.icon)) current_user.icon = filename db.session.add(current_user) db.session.commit() flash('图片已经保存') img_url = photos.url(current_user.icon) return render_template('users/change_icon.html',form=form,img_url=img_url)
def modifyStorage_form(storage_id): form = ModifyStorageForm() if current_user.group_id == 1: storage = Storage.query.filter_by(id=storage_id).first() if form.validate_on_submit(): suffix = os.path.splitext(form.pic.data.filename)[1] filename = random_string() + suffix photos.save(form.pic.data, name=filename) storage.pic = 'uploads/' + filename storage.available_time = form.available_time.data storage.phone_number = form.phone_number.data return 'success' return render_template('upload_form.html', form=form, current_user=current_user) else: flash('You are not an administrator!') return redirect(url_for('user.login'))
def change_icon(): form = IconForm() if form.validate_on_submit(): if current_user.icon != 'default.jpg': os.remove( os.path.join(current_app.config['UPLOADED_PHOTOS_DEST'], current_user.icon)) suffix = os.path.splitext(form.icon.data.filename)[-1] imgname = current_user.username + suffix photos.save(form.icon.data, name=imgname) pathname = os.path.join(current_app.config['UPLOADED_PHOTOS_DEST'], imgname) img = Image.open(pathname) img.thumbnail((64, 64)) img.save(pathname) current_user.icon = imgname db.session.add(current_user) flash('头像已更换') return render_template('user/change_psw.html', form=form)
def upload_image(): form = UploadForm() if form.validate_on_submit(): suffix = os.path.splitext(form.photo.data.filename)[1] filename = random_string() + suffix photos.save(form.photo.data, name=filename) pathname = os.path.join(current_app.config['UPLOADED_PHOTOS_DEST'], filename) img = Image.open(pathname) img.thumbnail((64, 64)) img.save(pathname) if current_user.icon != 'default.jpg': os.remove( os.path.join(current_app.config['UPLOADED_PHOTOS_DEST'], current_user.icon)) current_user.icon = filename db.session.add(current_user) img_url = url_for('static', filename='upload/' + current_user.icon) return render_template('user/image.html', form=form, img_url=img_url)
def uploadpic(): ''' 上传图片 ''' categorylist = Category.query.all() if request.method == 'POST' and 'photo' in request.files: # 获取后缀 suffix = os.path.splitext(request.files['photo'].filename)[-1] # 合成图片名 filename = gen_rnd_filename() + suffix # 保存图片 piclink = photos.save(request.files['photo'], name=filename) # # 生成缩略图 # pathname = os.path.join(current_app.config['UPLOADED_PHOTOS_DEST'], filename) # img = Image.open(pathname) # img.thumbnail((512, 512)) # img.save(pathname) # print(piclink) # print(filename) # 获取图片标题 name = request.form.get('name') # 获取图片分类 category = request.form.get('category') # 获取图片描述 describe = request.form.get('describe') # 判断图片分类是否已经存在,如果不存在则进行添加 # if category # 插入数据库 if describe: pic = Picture(picname=name, piclink='upload/' + piclink, category_id=category, describe=describe) else: pic = Picture(picname=name, piclink='upload/' + piclink, category_id=category) db.session.add(pic) flash('图片上传成功') return redirect(url_for('aboutadmin.uploadpic')) return render_template('dandan_manage/form-line.html', categorylist=categorylist)
def upload_image(): if request.files and 'image' in request.files: filename = photos.save(request.files['image']) return success_response({'filename': filename, 'image_url': photos.url(filename)}) else: raise ValidationError('Invalid parameter')
def editarticle(aid): ''' 编辑(修改)文章 ''' article = Article.query.get(aid) # 如果是GET请求,根据文章id查询出数据,显示在页面 if request.method == 'GET': categorylist = Category.query.all() # 查询文章对应的所有标签,并用逗号连接显示 acategorystr = '' for c in article.tags.all(): acategorystr += (',' + c.name) acategorystr = acategorystr[1:] # 去掉第一个多余的逗号 return render_template('dandan_manage/editarticle.html', article=article, categorylist=categorylist, acategorystr=acategorystr) # 如果是POST请求,则接收数据并保存到数据库 # 文章标题 title = request.form.get('title') # 文章简介 describe = request.form.get('describe') # 文章分类 category = Category.query.get(request.form.get('category')) # 文章标签 tag = request.form.get('tag').split(',') # 通过逗号切割 # 文章是否显示 if request.form.get('isshow') == 'on': isshow = True else: isshow = False # 文章正文文本 content = request.form.get('user-intro') # 文章封面图片 # 获取后缀 # print('*****************************') # if type(request.files['coverlink']) == 'NoneType': # coverlink = article.coverlink # else: suffix = os.path.splitext(request.files['coverlink'].filename)[-1] # 合成图片名 filename = gen_rnd_filename() + suffix # 保存图片 # piclink即是封面图片的名字 coverlink = photos.save(request.files['coverlink'], name=filename) # 保存文章到数据库 # 修改文章对象 article.title = title article.summary = describe article.content = content article.coverlink = coverlink article.isshow = isshow article.laststamp = datetime.utcnow() # 标签处理(主要是判断是否已经存在) taghas = article.tags.all() # 本篇文章所有的标签 for one in taghas: if one.name in tag: # 如果新建的标签已经属于本篇文章,则从标签列表中移除 tag.remove(one.name) else: # 否则直接pass pass for i in range(len(tag)): temp = i # 临时变量记录下标 i = Tag.query.filter_by(name=tag[temp]).first() # 判断标签是否有已经存在 if i: # 如果标签已经存在 for at in article.tags.all(): # 判断是否已属于这个标签 if at.name == i.name: # 如果属于,则什么都不做 pass else: # 如果标签存在,且文章不属于这个标签,则添加 文章-标签 关联 article.tags.append(i) else: i = Tag(name=tag[temp]) # 如果标签不存在,则创建对象 article.tags.append(i) # 添加 文章-标签 关联 category.articles.append(article) # 添加 文章-类别 关联 db.session.add(article) # 添加进会话 flash('文章修改成功') return redirect(url_for('aboutadmin.articlelist')) # 文章修改成功,返回文章列表页面