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)但是它不能用作直接访问本地文件的正常路径。

您应该使用 fname2Image.open()