def multi_upload(): form = MultiUploadForm() if form.validate_on_submit(): filenames = [] # check csrf token try: validate_csrf(form.csrf_token.data) except ValidationError: flash('CSRF token error.') return redirect(url_for('multi_upload')) photos = form.photo.data if not photos[0].filename: flash('No selected fle.') return redirect(url_for('multi_upload')) for f in photos: if f and allowed_file(f.filename): filename = random_filename(f.filename) f.save(os.path.join(app.config['UPLOAD_PATH'], filename)) filenames.append(filename) else: flash('Invalid file type.') return redirect(url_for('multi_upload')) flash('Upload success') session['filenames'] = filenames return redirect(url_for('show_images')) return render_template('upload.html', form=form)
def multi_upload(): form = MultiUploadForm() if request.method == 'POST': filenames = [] # check csrf token try: validate_csrf(form.csrf_token.data) except ValidationError: flash('CSRF token error.') return redirect(url_for('multi_upload')) photos = request.files.getlist('photo') # check if user has selected files. If not, the browser # will submit an empty file part without filename if not photos[0].filename: flash('No selected file.') return redirect(url_for('multi_upload')) for f in photos: # check the file extension if f and allowed_file(f.filename): filename = random_filename(f.filename) f.save(os.path.join(app.config['UPLOAD_PATH'], filename)) filenames.append(filename) else: flash('Invalid file type.') return redirect(url_for('multi_upload')) flash('Upload success.') session['filenames'] = filenames return redirect(url_for('show_images')) return render_template('upload.html', form=form)
def multi_upload(): form = MultiUploadForm() if request.method == 'POST': filenames = [] #验证CSRF令牌 try: validate_csrf(form.csrf_token.data) except ValidationError: flash('CSRF token error') return redirect(url_for('multi_upload')) #检查文件是否存在 if 'photo' not in request.files: flash('This field is required') return redirect(url_for('multi_upload')) #循环保存文件 for f in request.files.getlist('photo'): if f and allowed_file(f.filename): filename = random_filename(f.filename) f.save(os.path.join(app.config['UPLOAD_PATH'], filename)) filenames.append(filename) else: flash('Invalid file type') return redirect(url_for('multi_upload')) flash('upload success') session['filenames'] = filenames return redirect(url_for('show_images')) return render_template('upload.html', form=form)
def multi_upload(): form = MultiUploadForm() if request.method == 'POST': filenames = [] # 验证CSRF令牌 try: validate_csrf(form.csrf_token.data) except: flash('CSRF token error.') return redirect(url_for('multi_upload')) # 检查文件是否存在 # 如果用户没有选择文件就提交表单则request.files为空,相当于FileRequired验证器 if 'photo' not in request.files: flash('This field is required.') return redirect(url_for('multi_upload')) # 传入字段的name属性值会返回包含所有上传文件对象的列表 for f in request.files.getlist('photo'): # 检查文件类型 # 相当于FileAllowed验证器 if f and allowed_file(f.filename): filename = random_filename(f.filename) f.save(os.path.join(app.config['UPLOAD_PATH'], filename)) filenames.append(filename) else: flash('Invalid file type.') return redirect(url_for('multi_upload')) flash('Upload success!') session['filenames'] = filenames return redirect(url_for('show_images')) return render_template('upload.html', form=form)
def multi_upload(): form = MultiUploadForm() if request.method == 'POST': filenames = [] try: validate_csrf(form.csrf_token.data) except ValidationError: flash('CSRF token 错误!') return redirect(url_for('multi_upload')) if 'photo' not in request.files: flash('文件不存在!') return redirect(url_for('multi_upload')) for f in request.files.getlist('photo'): if f and allowed_file(f.filename): filename = random_filename(f.filename) f.save(os.path.join(app.config['UPLOAD_PATH'], filename)) filenames.append(filename) else: flash('文件无效!') return redirect(url_for('multi_upload')) flash('上传成功!') session['filenames'] = filenames return redirect(url_for('show_images')) return render_template('upload_file.html', form=form)
def maintance(): form = MultiUploadForm() if request.method == 'POST': filenames = [] for f in request.files.getlist('photo'): if f and allowed_file(f.filename): filename = f.filename f.save(os.path.join( app.config['UPLOAD_PATH'], filename )) filenames.append(filename) else: flash('文件格式不正确') return redirect(url_for('maintance')) pd = Maintenance() pd.create_maintenance_task() flash('巡检任务已执行完成,请查看结果') return redirect(url_for('index')) return render_template('maintance.html', form=form)
def multi_upload(): form = MultiUploadForm() if request.method == 'POST': filenames = [] for f in request.files.getlist('photo'): if f and allowed_file(f.filename): filename = f.filename f.save(os.path.join( app.config['UPLOAD_PATH'], filename )) filenames.append(filename) else: flash('文件格式不正确') return redirect(url_for('multi_upload')) alarm = EquipmentAlarm() alarm.add_equipment_alarm() alarm.device_reference() flash('告警规则已执行完成,请查看结果') return redirect(url_for('index')) return render_template('upload.html', form=form)
def multi_upload(): form = MultiUploadForm() if request.method == 'POST': filenames = [] # check csrf token try: validate_csrf(form.csrf_token.data) except ValidationError: flash('CSRF token error.') return redirect(url_for('multi_upload')) # check if the post request has the file part if 'photo' not in request.files: flash('This field is required.') return redirect(url_for('multi_upload')) for f in request.files.getlist('photo'): # if user does not select file, browser also # submit a empty part without filename # if f.filename == '': # flash('No selected file.') # return redirect(url_for('multi_upload')) # check the file extension if f and allowed_file(f.filename): filename = random_filename(f.filename) f.save(os.path.join(app.config['UPLOAD_PATH'], filename)) filenames.append(filename) else: flash('Invalid file type.') return redirect(url_for('multi_upload')) flash('Upload success.') session['filenames'] = filenames return redirect(url_for('show_images')) return render_template('upload.html', form=form)
def multiuploader(request, noajax=False): """ Main Multiuploader module. Parses data from jQuery plugin and makes database changes. """ if request.method == 'POST': log.info('received POST to main multiuploader view') if request.FILES is None: response_data = [{"error": _('Must have files attached!')}] return HttpResponse(simplejson.dumps(response_data)) if not u'form_type' in request.POST: response_data = [{"error": _("Error when detecting form type, form_type is missing")}] return HttpResponse(simplejson.dumps(response_data)) signer = Signer() try: form_type = signer.unsign(request.POST.get(u"form_type")) except BadSignature: response_data = [{"error": _("Tampering detected!")}] return HttpResponse(simplejson.dumps(response_data)) form = MultiUploadForm(request.POST, request.FILES, form_type=form_type) if not form.is_valid(): error = _("Unknown error") if "file" in form._errors and len(form._errors["file"]) > 0: error = form._errors["file"][0] response_data = [{"error": error}] return HttpResponse(simplejson.dumps(response_data)) file = request.FILES[u'file'] wrapped_file = UploadedFile(file) filename = wrapped_file.name file_size = wrapped_file.file.size log.info('Got file: "%s"' % filename) #writing file manually into model #because we don't need form of any type. fl = MultiuploaderFile() fl.filename = filename fl.file = file fl.save() log.info('File saving done') thumb_url = "" try: thumb_url = get_thumbnail(fl.file, "80x80", quality=50) except Exception as e: log.error(e) #generating json response array result = [{"id": fl.id, "name": filename, "size": file_size, "url": reverse('multiuploader_file_link', args=[fl.pk]), "thumbnail_url": thumb_url, "delete_url": reverse('multiuploader_delete', args=[fl.pk]), "delete_type": "POST", }] response_data = simplejson.dumps(result) #checking for json data type #big thanks to Guy Shapiro if noajax: if request.META['HTTP_REFERER']: redirect(request.META['HTTP_REFERER']) if "application/json" in request.META['HTTP_ACCEPT_ENCODING']: mimetype = 'application/json' else: mimetype = 'text/plain' return HttpResponse(response_data, mimetype=mimetype) else: # GET return HttpResponse('Only POST accepted')
def multiuploader(request, noajax=False): """ Main Multiuploader module. Parses data from jQuery plugin and makes database changes. """ if request.method == 'POST': log.info('received POST to main multiuploader view') if request.FILES is None: response_data = [{"error": _('Must have files attached!')}] return HttpResponse(json.dumps(response_data)) if not u'form_type' in request.POST: response_data = [{ "error": _("Error when detecting form type, form_type is missing") }] return HttpResponse(json.dumps(response_data)) signer = Signer() try: form_type = signer.unsign(request.POST.get(u"form_type")) except BadSignature: response_data = [{"error": _("Tampering detected!")}] return HttpResponse(json.dumps(response_data)) form = MultiUploadForm(request.POST, request.FILES, form_type=form_type) if not form.is_valid(): error = _("Unknown error") if "file" in form._errors and len(form._errors["file"]) > 0: error = form._errors["file"][0] response_data = [{"error": error}] return HttpResponse(json.dumps(response_data)) file = request.FILES[u'file'] wrapped_file = UploadedFile(file) filename = wrapped_file.name file_size = wrapped_file.file.size log.info('Got file: "%s"' % filename) #writing file manually into model #because we don't need form of any type. fl = MultiuploaderFile() fl.filename = filename fl.file = file fl.save() log.info('File saving done') thumb_url = "" try: im = get_thumbnail(fl.file, "80x80", quality=50) thumb_url = im.url except Exception as e: log.error(e) #generating json response array result = [{ "id": fl.id, "name": filename, "size": file_size, "url": reverse('multiuploader_file_link', args=[fl.pk]), "thumbnail_url": thumb_url, "delete_url": reverse('multiuploader_delete', args=[fl.pk]), "delete_type": "POST", }] response_data = json.dumps(result) #checking for json data type #big thanks to Guy Shapiro if noajax: if request.META['HTTP_REFERER']: redirect(request.META['HTTP_REFERER']) if "application/json" in request.META['HTTP_ACCEPT_ENCODING']: mimetype = 'application/json' else: mimetype = 'text/plain' return HttpResponse(response_data, content_type="{0}; charset=utf-8".format(mimetype)) else: # GET return HttpResponse('Only POST accepted')