У меня есть приложение Flask, где пользователь может загрузить изображение, и изображение сохраняется в статической папке в файловой системе. В настоящее время я использую Google App Engine для хостинга и обнаружил, что невозможно сохранить в статическую папку в стандартной среде. Вот код
def save_picture(form_picture,name):
picture_fn = name + '.jpg'
picture_path = os.path.join(app.instance_path, 'static/image/'+ picture_fn)
output_size = (1000,1000)
i = Image.open(form_picture)
i.thumbnail(output_size)
i.save(picture_path)
return picture_path
@app.route('/image/add', methods=['GET', 'POST'])
def addimage():
form = Form()
if form.validate_on_submit():
name = 'randomname'
try:
picture_file = save_picture(form.image.data,name)
return redirect(url_for('addimage'))
except:
flash("unsuccess")
return redirect(url_for('addimage'))
Мой вопрос: если я перейду со стандартной среды на гибкую, можно ли будет сохранить ее в статическую папку? Если нет, то какие другие варианты хостинга я должен рассмотреть? Есть ли у вас какие-либо предложения?
Заранее спасибо.
Следуя вашим советам, я перехожу на использование облачного хранилища. мне интересно, что я должен использовать от upload_from_file (), upload_from_filename () или upload_from_string (). исходный_файл берет данные из form.photo.data из flask-wtform. я еще не успешно экономлю на облачном хранилище. это мой код:
def upload_blob(bucket_name, source_file, destination_blob_name):
storage_client = storage.Client()
bucket = storage_client.get_bucket(bucket_name)
blob = bucket.blob(destination_blob_name)
blob.upload_from_filename(source_file)
return destination_blob_name
@app.route('/image/add', methods=['GET', 'POST'])
def addimage():
form = Form()
if form.validate_on_submit():
name = 'randomname'
try:
filename = 'foldername/'+ name + '.jpg'
picture_file = upload_blob('mybucketname', form.photo.data, filename)
return redirect(url_for('addimage'))
except:
flash("unsuccess")
return redirect(url_for('addimage'))