Django - 无法读取媒体文件
Django - Can't read media files
我正在使用 Django 创建一个网站,您可以在该网站上上传图像并检查图像是否包含波纹图案。这是项目结构:
在文件 settings.py 中,我为媒体文件指定了以下目录:
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'
在文件 views.py 中,我实现了 API 来接收图像并像这样检测波纹图案:
from django.core.files.storage import default_storage
def index(request):
if request.method == 'POST':
f = request.FILES['sentFile']
response = {}
fname = 'pic.jpg'
fname2 = default_storage.save(fname, f)
file_url = default_storage.url(fname2)
image = Image.open(file_url)
pred_label = moire_detect(image)
response['label'] = pred_label
return render(request, 'frontpage.html', response)
else:
return render(request, 'frontpage.html')
但是,当我尝试使用 Pillow 的图像模块打开图像时,出现错误“没有这样的文件或目录:'/media/pic_O1TOyCK.jpg'”。
我不太明白这里发生了什么,因为路径是正确的。任何帮助将不胜感激。
Image.open
不适用于 url
但正常 path
.
但是 file_url
有 /media/pic_O1TOyCK.jpg
也就是 relative url
并且它可以用在 HTML 上(得到 http://localhost/media/pic_O1TOyCK.jpg
)但是它不能用作直接访问本地文件的正常路径。
您应该使用 fname2
和 Image.open()
我正在使用 Django 创建一个网站,您可以在该网站上上传图像并检查图像是否包含波纹图案。这是项目结构:
在文件 settings.py 中,我为媒体文件指定了以下目录:
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'
在文件 views.py 中,我实现了 API 来接收图像并像这样检测波纹图案:
from django.core.files.storage import default_storage
def index(request):
if request.method == 'POST':
f = request.FILES['sentFile']
response = {}
fname = 'pic.jpg'
fname2 = default_storage.save(fname, f)
file_url = default_storage.url(fname2)
image = Image.open(file_url)
pred_label = moire_detect(image)
response['label'] = pred_label
return render(request, 'frontpage.html', response)
else:
return render(request, 'frontpage.html')
但是,当我尝试使用 Pillow 的图像模块打开图像时,出现错误“没有这样的文件或目录:'/media/pic_O1TOyCK.jpg'”。
我不太明白这里发生了什么,因为路径是正确的。任何帮助将不胜感激。
Image.open
不适用于 url
但正常 path
.
但是 file_url
有 /media/pic_O1TOyCK.jpg
也就是 relative url
并且它可以用在 HTML 上(得到 http://localhost/media/pic_O1TOyCK.jpg
)但是它不能用作直接访问本地文件的正常路径。
您应该使用 fname2
和 Image.open()