我一直在Google和StackOverflow上查看过很多类似的问题,但似乎并不是一个对我有用的令人满意的解决方案。
我的情况是这样的 -
我按照jQuery File Upload步骤使用here。
我要保存文件的位置是动态的,取决于username
和session_key
。
这是写文件的功能 -
def handle_uploaded_file(file, session_key, username):
folder_path = os.path.dirname(os.path.realpath(__file__)) + '\\Source\\' + username + '\\session_id_' + session_key
if not os.path.exists(folder_path):
os.makedirs(folder_path)
save_path = folder_path + '\\Source Files'
with open(save_path, 'wb+') as destination:
for chunk in file.chunks():
destination.write(chunk)
我尝试上传名为" normal.csv"的文件,但我得到了一个名为" Source Files"的文件。在目录中没有扩展名。
当我将open()
函数内的路径更改为
with open(save_path+file.name, 'wb+') as destination
我有一个名为' Source Filesnormal.csv'。
的文件然后我尝试将save_path
更改为folder_path + '\\Source Files\\'
,然后将save_path+file.name
传递给open()
,然后又说No such file or directory
。
我很困惑如何进入该文件夹位置并写入文件。
我在这里不能使用MEDIA_URL
,因为它取决于username
和session_key
。
答案 0 :(得分:1)
您没有将上传的文件名提供给目标路径。
应该是这样的:
save_path = os.path.join(folder_path, 'Source Files', file.name)
你会给你一条这样的道路:
... \ Source Files \ your_uploaded_file_name
但是,请记住,您需要检查此路径中是否存在目录。因此,os.path.exists
检查'源文件' 会很好。
source_files_path = os.path.join(folder_path, 'Source Files')
if not os.path.exists(source_files_path):
os.mkdirs(source_files_path)
save_path = os.path.join(source_files_path, file.name)