Загрузка GAE Python Bucket не работает - PullRequest
0 голосов
/ 29 мая 2018

Я пытаюсь загрузить файлы в мое облако Google Bucket.Но он не появляется, хотя он работал некоторое время назад, так что я знаю, что расположение корзины правильное.Но он сохраняет это с 0b или не имеет вообще.Как бы это исправить?

Маршрут

@app.route('/admin/create/post/<int:id>', methods=['GET', 'POST'])
def create_post(id=None):
    """Display form for creating a post."""
    form = forms.Post()
    if form.validate_on_submit():
        models.Post.create(project_id=id,
                           name=form.name.data,
                           content=form.content.data)
        post = (models.Post.select()
                .where(
                    (models.Post.name == form.name.data),
                    (models.Post.content == form.content.data)).get())
        for filename in request.files:
            file = request.files.get(str(filename))
            upload_image_file(file, post.id)
        return redirect(url_for('admin'))
    return render_template('create_post.html', form=form)

функция загрузки файла изображения

def upload_image_file(filename, filecontent, post_id):
    """Save file."""
    logging.debug("""upload_image_file, name={},content={},postid={}"""
                  .format(filename, filecontent, post_id))
    path = 'post/' + '{}/'.format(post_id)
    path = path.lower()
    filepath = (path + str(filename)).lower()
    client = _get_storage_client()
    logging.debug('select storage')
    bucket = client.bucket(app.config['CLOUD_STORAGE_BUCKET'])
    logging.debug('select bucket')
    blob = bucket.blob(filepath)
    print('file read = {}'.format(filecontent))
    # blob.upload_from_string(file.read())
    blob.upload_from_string(
        'test.txt',
        content_type=filecontent)
    url = blob.public_url
    # try:
    #     url = url.decode('utf-8')
    #     logging.debug('decoded url = {}'.format(url))
    # except Exception:
    #     logging.debug('Did not decode = {} | url'.format(url))
    models.Media.create(
        post_id=post_id,
        media=url)

1 Ответ

0 голосов
/ 30 мая 2018

Ошибки в вашем коде.Основной:

Вы звоните upload_image_file(file, post.id)

Тем не менее, функция upload_image_file() принимает 3 параметра:

def upload_image_file(filename, filecontent, post_id):

Что вы делаетелоги говорят?

...