質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

受付中

画像のアップロード後リネーム処理(複数の関数を順番に実行する方法)

study_ing
study_ing

総合スコア0

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0回答

0評価

0クリップ

8閲覧

投稿2018/11/06 15:18

画像のアップロード後リネーム処理

pythonの勉強を始めて2週間ほどの初心者です。説明が下手ですが、ご教示いただきたくお願いします。
最終的にはカメラで撮った写真をアップロードして、元ファイルから削除、アップロードしたファイルは撮影した内容によって決められた名前にリネーム(複数ファイルアップロードしたときは連番)してファイル名によってそれぞれ所定のフォルダへ移動させるというプログラムにしたく、まずはローカルにて、変数を入れずにシンプルに下記のとおり組みました。
①画像をピクチャからアップロード(現在はローカルフォルダ)
②ピクチャから画像を削除
③ユーザーにはアップロード完了画面(ブラウザ)
④裏では画像をリネームしてフォルダへ移動

発生している問題・エラーメッセージ

④リネームしてフォルダ移動させるところでリネーム関数を作成しましたが、作成したアップロード関数ではブラウザを表示して終了してしまい、リネーム関数が動いていません。

該当のソースコード

python

import os from flask import render_template, request, redirect, url_for, send_from_directory, make_response, jsonify from werkzeug import secure_filename from kirokuhojo import app UPLOAD_DIR = './aaa/static/uploads' ALLOWED_EXTENSIONS = set(['png', 'jpg', 'JPG']) app.config['UPLOAD_FOLDER'] = UPLOAD_DIR directory = 'C://Users/me/xxx/aaa/static/uploads/' new_directory = 'C://Users/me/xxx/aaa/uploads/' file_list = os.listdir(directory) def allowed_file(filename): return '.' in filename and \ filename.rsplit('.', 1)[1] in ALLOWED_EXTENSIONS @app.route('/send', methods=['GET', 'POST']) def upload_multipart(): if 'uploadFile' not in request.files: make_response(jsonify({'result':'uploadFile is required'})) upload_files = request.files.getlist('img_file') for img_file in upload_files: filename = secure_filename(img_file.filename) img_file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename)) os.remove('C://Users/me/Pictures/Camera Roll/' + filename) img_url = '/static/uploads/' + filename return render_template('entries/photo.html', img_url=img_url) else: return redirect(url_for('entries/photo')) def rename(): a = 1 for file in file_list: path = os.path.join(directory, file) name = 'test'+str(a)+'.jpg' target = os.path.join(new_directory, name) os.rename(path, target) a = a+1 @app.route('/uploads/<filename>') def uploaded_file(filename): return send_from_directory(app.config['UPLOAD_FOLDER'], filename) if __name__ == '__main__': app.debug = True app.run()

試したこと

アップロード関数の中に組み込んでみましたが、うまいことリネームされません。おそらくアップロード先(リネーム元)フォルダにファイルがないと認識されているのかと思います。
解決方法がありましたらご教示いただきたくよろしくお願いします。

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

gh640
gh640

2018/11/12 14:37

こちらは今も回答を求めてらっしゃいますか?それとも自己解決されましたか?回答を求めてらっしゃったら回答させていただこうと思います。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。