# Django 默认存储方式: # settings.py MEDIA_DIR = 'media' MEDIA_ROOT = os.path.join(os.path.join(BASE_DIR, 'static'), 'media') # models.py goods_img = models.ImageField(upload_to="goods/") # 图片将上传到 "media/goods"目录中 # 指定存储路径 # models.py import os from django.conf import settings from django.core.files.storage import FileSystemStorage class ... path = FileSystemStorage(location=os.path.join(settings.BASE_DIR, 'media/')) photo = models.ImageField(storage=path) # 图片将上传到指定的path目录, MEDIA_ROOT不再起作用 # 使用fdfs存储文件 # settings.py DEFAULT_FILE_STORAGE = "utils.fdfs.FDFSStorage.FdfsStorage" #FDFSStorage(py),FdfsStorage(class) FDFS_BASE_URL = "http://192.168.192.154:8888/" FDFS_CLIENT_CONFIG = "utils/fdfs/client_conf" # 根目录新建python package utils/fdfs # 在fdfs新建: client_conf # client配置文件, 可以从linux copy FDFSStorage.py # encoding=utf8 from django.core.files.storage import Storage from fdfs_client.client import Fdfs_client from django.conf import settings class FdfsStorage(Storage): def __init__(self, client_conf=None, base_url=None): if client_conf is None: client_conf = settings.FDFS_CLIENT_CONFIG self.client_conf = client_conf if base_url is None: base_url = settings.FDFS_BASE_URL self .base_url = base_url def _open(self, name, mode="rb"): pass def _save(self, name, content): name = name.replace("\\", "/") client = Fdfs_client(self.client_conf) res = client.upload_by_buffer(content.read()) """ dict{ 'Group name': group_name, 'Remote file_id': remote_file_id, 'Status': 'Upload successed.', 'Local file name': '', 'Uploaded size': upload_size, 'Storage IP': storage_ip }""" if res.get("Status", "") != 'Upload successed.': raise Exception(u"上传文件到fdfs失败") filename = res.get("Remote file_id") return filename def exists(self, name): return False def url(self, name): name = name.replace("\\", "/") return self.base_url + name
# 在tests.py中测试:
import os
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "projectname.settings")
import django
django.setup()
from app01.models import Tea, Stu
t = Tea.objects.get(name='x')
s = Stu.objects.get(name='xx')
print t.imgFeild.url # 通过imgFeild.url属性 访问文件的路径
print s.imgFeild.url
浙公网安备 33010602011771号