コード例 #1
0
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)
コード例 #2
0
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)
コード例 #3
0
ファイル: test.py プロジェクト: ft9738962/flask_practice
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)
コード例 #4
0
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)
コード例 #5
0
ファイル: app.py プロジェクト: lxiin00/Learn_Flask
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)
コード例 #6
0
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)
コード例 #7
0
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)
コード例 #8
0
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)
コード例 #9
0
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')
コード例 #10
0
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')