画像のアップロード後リネーム処理
pythonの勉強を始めて2週間ほどの初心者です。説明が下手ですが、ご教示いただきたくお願いします。
最終的にはカメラで撮った写真をアップロードして、元ファイルから削除、アップロードしたファイルは撮影した内容によって決められた名前にリネーム(複数ファイルアップロードしたときは連番)してファイル名によってそれぞれ所定のフォルダへ移動させるというプログラムにしたく、まずはローカルにて、変数を入れずにシンプルに下記のとおり組みました。
①画像をピクチャからアップロード(現在はローカルフォルダ)
②ピクチャから画像を削除
③ユーザーにはアップロード完了画面(ブラウザ)
④裏では画像をリネームしてフォルダへ移動
発生している問題・エラーメッセージ
④リネームしてフォルダ移動させるところでリネーム関数を作成しましたが、作成したアップロード関数ではブラウザを表示して終了してしまい、リネーム関数が動いていません。
該当のソースコード
python
1import os 2from flask import render_template, request, redirect, url_for, send_from_directory, make_response, jsonify 3from werkzeug import secure_filename 4from kirokuhojo import app 5 6UPLOAD_DIR = './aaa/static/uploads' 7ALLOWED_EXTENSIONS = set(['png', 'jpg', 'JPG']) 8app.config['UPLOAD_FOLDER'] = UPLOAD_DIR 9directory = 'C://Users/me/xxx/aaa/static/uploads/' 10new_directory = 'C://Users/me/xxx/aaa/uploads/' 11file_list = os.listdir(directory) 12 13 14def allowed_file(filename): 15 return '.' in filename and \ 16 filename.rsplit('.', 1)[1] in ALLOWED_EXTENSIONS 17 18 19@app.route('/send', methods=['GET', 'POST']) 20def upload_multipart(): 21 if 'uploadFile' not in request.files: 22 make_response(jsonify({'result':'uploadFile is required'})) 23 upload_files = request.files.getlist('img_file') 24 for img_file in upload_files: 25 filename = secure_filename(img_file.filename) 26 img_file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename)) 27 os.remove('C://Users/me/Pictures/Camera Roll/' + filename) 28 img_url = '/static/uploads/' + filename 29 return render_template('entries/photo.html', img_url=img_url) 30 else: 31 return redirect(url_for('entries/photo')) 32 33 34def rename(): 35 a = 1 36 for file in file_list: 37 path = os.path.join(directory, file) 38 name = 'test'+str(a)+'.jpg' 39 target = os.path.join(new_directory, name) 40 os.rename(path, target) 41 a = a+1 42 43 44@app.route('/uploads/<filename>') 45def uploaded_file(filename): 46 return send_from_directory(app.config['UPLOAD_FOLDER'], filename) 47 48 49if __name__ == '__main__': 50 app.debug = True 51 app.run()
試したこと
アップロード関数の中に組み込んでみましたが、うまいことリネームされません。おそらくアップロード先(リネーム元)フォルダにファイルがないと認識されているのかと思います。
解決方法がありましたらご教示いただきたくよろしくお願いします。
こちらは今も回答を求めてらっしゃいますか?それとも自己解決されましたか?回答を求めてらっしゃったら回答させていただこうと思います。

あなたの回答
tips
プレビュー