· 5 years ago · Mar 06, 2020, 12:00 PM
1"""
2
3ACCESS_KEY = 'YOUR_ACCESS_KEY'
4
5SECRET_KEY = 'YOUR_SECRET_KEY'
6
7bucketName = 'YOUR_BUCKETNAME'
8
9UPLOAD_FOLDER = 'YOUR_LOCAL_FOLDER'
10
11app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER
12
13DOWNLOAD_FOLDER = 'YOUR_BUCKET_FOLDER'
14
15app.config['DOWNLOAD_FOLDER'] = DOWNLOAD_FOLDER
16
17
18@app.route('/admin/loadBucketFile')
19def adminLoadBucketFile():
20 try:
21 if adminLoginSession() == 'admin':
22 return render_template('admin/addBucketFile.html')
23 else:
24 adminLogoutSession()
25
26 except Exception as ex:
27
28 logging.error(ex)
29
30
31@app.route('/admin/insertBucketFile', methods=['POST'])
32def adminInsertBucketFile():
33 try:
34 if adminLoginSession() == 'admin':
35
36 bucketFileVO = BucketFileVO()
37 bucketFileDAO = BucketFileDAO()
38
39 file = request.files['file']
40
41 bucketFileName = secure_filename(file.filename)
42
43 bucketFilePath = os.path.join(app.config['UPLOAD_FOLDER'])
44
45 print('bucketFileName::', bucketFileName)
46 print('bucketFilePath::', bucketFilePath)
47
48 file.save(os.path.join(bucketFilePath, bucketFileName))
49
50 s3Resource = boto3.resource('s3', aws_access_key_id=ACCESS_KEY, aws_secret_access_key=SECRET_KEY)
51
52 # s3Resource.Object(bucketName, bucketFileName).upload_file(Filename=bucketFilePath + bucketFileName)
53
54 expiration = 3600
55
56 s3Resource.meta.client.upload_file(Filename=bucketFilePath + bucketFileName, Bucket=bucketName,
57 Key=bucketFileName)
58
59 s3_client = boto3.client('s3', aws_access_key_id=ACCESS_KEY, aws_secret_access_key=SECRET_KEY)
60
61 bucketFileObjectURL = s3_client.generate_presigned_url('get_object', Params={'Bucket': bucketName,
62 'Key': bucketFileName},
63 ExpiresIn=expiration)
64
65 print(bucketFileObjectURL)
66
67 currentDate = str(datetime.now().date())
68 currentTime = datetime.now().strftime('%H:%M:%S')
69
70 bucketFileVO.bucketFileName = bucketFileName
71 bucketFileVO.bucketFilePath = bucketFilePath.replace('project', '..')
72 bucketFileVO.bucketFileUploadDate = currentDate
73 bucketFileVO.bucketFileUploadTime = currentTime
74 bucketFileVO.bucketFileObjectURL = bucketFileObjectURL
75
76 bucketFileDAO.insertBucketFile(bucketFileVO)
77
78 return redirect('/admin/viewBucketFile')
79 else:
80 adminLogoutSession()
81
82
83 except Exception as ex:
84
85 logging.error(ex)
86
87
88@app.route('/admin/viewBucketFile')
89def adminViewBucketFile():
90 try:
91 if adminLoginSession() == 'admin':
92 bucketFileDAO = BucketFileDAO()
93
94 bucketFileVOList = bucketFileDAO.viewBucketFile()
95
96 return render_template('admin/viewBucketFile.html', bucketFileVOList=bucketFileVOList)
97 else:
98 adminLogoutSession()
99 except Exception as ex:
100 logging.error(ex)
101
102
103@app.route('/admin/downloadBucketFile')
104def adminViewDownloadBucketFile():
105 try:
106 if adminLoginSession() == 'admin':
107
108 bucketFileVO = BucketFileVO()
109 bucketFileDAO = BucketFileDAO()
110
111 bucketFileId = request.args.get('bucketFileId')
112
113 bucketFileVO.bucketFileId = bucketFileId
114
115 bucketFileVOList = bucketFileDAO.getBucketFile(bucketFileVO)
116
117 print(bucketFileVOList)
118
119 bucketFileName = bucketFileVOList[0].bucketFileName
120
121 s3Resource = boto3.resource('s3', aws_access_key_id=ACCESS_KEY, aws_secret_access_key=SECRET_KEY)
122
123 s3Resource.Bucket(bucketName).download_file(bucketFileName, DOWNLOAD_FOLDER + bucketFileName)
124
125 downloadFilePath = DOWNLOAD_FOLDER.replace("project", "..") + bucketFileName
126
127 return render_template('admin/viewDownloadFile.html', downloadFilePath=downloadFilePath)
128 else:
129 adminLogoutSession()
130 except Exception as ex:
131 print(ex)
132
133
134@app.route('/admin/deleteBucketFile')
135def adminDeleteBucketFile():
136 try:
137 if adminLoginSession() == 'admin':
138
139 bucketFileVO = BucketFileVO()
140 bucketFileDAO = BucketFileDAO()
141
142 bucketFileId = request.args.get('bucketFileId')
143
144 bucketFileVO.bucketFileId = bucketFileId
145
146 bucketFileVOList = bucketFileDAO.deleteBucketFile(bucketFileVO)
147
148 print(bucketFileVOList)
149
150 bucketFileName = bucketFileVOList.bucketFileName
151
152 bucketFilePath = bucketFileVOList.bucketFilePath.replace("..", "project")
153
154 bucketFile = bucketFilePath + bucketFileName
155
156 os.remove(bucketFile)
157
158 s3 = boto3.resource("s3", aws_access_key_id=ACCESS_KEY, aws_secret_access_key=SECRET_KEY)
159
160 object = s3.Object(bucketName, bucketFileName)
161
162 object.delete()
163
164 return redirect(url_for('adminViewBucketFile'))
165 else:
166 adminLogoutSession()
167 except Exception as ex:
168 logging.error(ex)
169
170BucketFileVO.py
171
172from Core_Python.Solution_Python.LEC19.Flask_SqlAlchemy_MVC_Python.project import db
173
174
175class BucketFileVO(db.Model):
176 __tablename__ = 'bucketfilemaster'
177 bucketFileId = db.Column('bucketFileId', db.Integer, primary_key=True, autoincrement=True)
178 bucketFileName = db.Column('bucketFileName', db.String(100))
179 bucketFilePath = db.Column('bucketFilePath', db.String(100))
180 bucketFileUploadDate = db.Column('bucketFileUploadDate', db.String(100))
181 bucketFileUploadTime = db.Column('bucketFileUploadTime', db.String(100))
182 bucketFileObjectURL = db.Column('bucketFileObjectURL', db.String(500))
183
184 def as_dict(self):
185 return {
186 'bucketFileId': self.bucketFileId,
187 'bucketFileName': self.bucketFileName,
188 'bucketFilePath': self.bucketFilePath,
189 'bucketFileUploadDate': self.bucketFileUploadDate,
190 'bucketFileUploadTime': self.bucketFileUploadTime,
191 'bucketFileObjectURL': self.bucketFileObjectURL
192 }
193
194
195db.create_all()
196
197
198"""