我想提供媒体文件的绝对路径,这样一旦文件上传,我就可以通过媒体文件夹中的绝对路径获取它。 在我的settings.py中,我将MEDIA_ROOT定义为;
MEDIA_ROOT = os.path.join(SITE_ROOT, 'media')
和SITE_ROOT为
SITE_ROOT = os.path.dirname(os.path.realpath(__file__))
在我的模型中,我有一个文件字段,用于定义文件的上传位置
file=models.FileField(upload_to='csvs',blank=True, null=True)
在我的观点中,我试图将绝对文件作为
if request.method=='POST':
form=UploadForm(request.POST,request.FILES)
if form.is_valid():
files=request.FILES['file']
evidence=request.POST['evidence']
path_to_tzjmplist_file=default_storage.path(files)
form.save()
这将绝对路径返回为
"C:\Josh\Desktop\artefacts\artefacts\media\file_name.csv"
问题是它遗漏了最后一个文件夹" csvs"
我希望它回归:
"C:\Josh\Desktop\artefacts\artefacts\media\csvs\file_name.csv"
我非常感谢你的意见 此致
答案 0 :(得分:1)
我相信你希望path_to_tzjmplist_file包含文件的磁盘路径。如果这是真的,我认为这样的事情会起作用:
if request.method=='POST':
form=UploadForm(request.POST,request.FILES)
if form.is_valid():
files=request.FILES['file']
evidence=request.POST['evidence']
saved_object = form.save()
path_to_tzjmplist_file = saved_object.file.name
答案 1 :(得分:0)
您应首先保存表单(以便创建对象),然后再访问其属性,然后从实例中获取name
的路径:
if request.method=='POST':
form=UploadForm(request.POST,request.FILES)
if form.is_valid():
obj = form.save() # Saves to the database
files=request.FILES['file']
evidence=request.POST['evidence']
#path_to_tzjmplist_file=default_storage.path(files)
file_name_with_path = obj.name