同一文件version.py
中有2个功能或视图,一个用于上传,另一个用于下载该文件。问题是send_file函数在打开文件时会不断更改目录。
代码1:
文件上传功能:
binfile = form.binfile.data
filename = secure_filename("arduino.bin")
#without the app folder
binfile.save(os.path.join(
app.config['UPLOAD_FOLDER'],
device_names.farm_id,
device_names.mqtt_id,
filename))
flash('File Uploaded', 'success')
文件下载功能:
file_path = os.path.join(
app.config['UPLOAD_FOLDER'],
farm_id,
device_id,
'arduino.bin')
print(file_path)
response = make_response(send_file(
file_path,
mimetype='application/octet-stream',
as_attachment=True
))
response.headers['x-MD5'] = md5(file_path)
print(response.headers)
return response, 200
在这里文件被上传到项目的根文件夹。 当我发送对此文件的请求时,出现此错误:
[Errno 2]没有这样的文件或目录: ‘/home/maxwell/Desktop/python/aquaponics-monitor/app/firmware-manager/FARM0/node2/arduino.bin”
当我手动将文件移动到“ app”文件夹时,在请求时没有收到任何错误,并且收到200响应代码。因此,我假设该函数正在“ app”文件夹中查找文件。我在上传时通过在路径中添加“ app”来更改了上传位置。
代码2: 文件上传功能:
binfile = form.binfile.data
filename = secure_filename("arduino.bin")
#app folder included
binfile.save(os.path.join(
'app',
app.config['UPLOAD_FOLDER'],
device_names.farm_id,
device_names.mqtt_id,
filename))
flash('File Uploaded', 'success')
文件下载功能与代码1相同。对于此代码,我收到此错误:
[Errno 2]没有这样的文件或目录: ‘firmware-manager / FARM0 / node2 / arduino.bin’
文件下载功能现在位于项目根文件夹中。这次,我将文件手动移到了根文件夹,再次发送状态代码200,并且在发送请求时没有错误。 我在整个应用程序中所做的唯一代码更改是在文件上传功能的路径中添加了“ app”。为什么会这样?