fastDFS

<table class="text"><tr class="li1">
<td class="ln"><pre class="de1">1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68

自定义存储系统 1)需要继承自django.core.files.storage.Storage 2)支持Django不带任何参数来实例化存储类,也就是说任何设置都应该从django.conf.settings中获取 3)存储类中必须实现_open()和_save()方法,以及任何后续使用中可能用到的其他方法。 4)需要为存储类添加django.utils.deconstruct.deconstructible装饰器   #setting配置 DEFAULT_FILE_STORAGE = '自定义存储类'   # FastDFS FDFS_URL = 'http://image.meiduo.site:8888/'  #是fdfs访问的路由,可以自己配置 FDFS_CLIENT_CONF = os.path.join(BASE_DIR,'utils/fastdfs/client.conf')   ''' _open(name,mode='rb')被Storage.open()调用,在打开文件时被使用 _save(name,content)被Storage.save()调用,name是传入的文件名,content是Django接收到的文件内容,该方法需要将content文件内容保存 exists(name)如果名为name的文件文件系统中存在,则返回True,否则返回False。 url(name)返回文件的完整访问URL delete(name)删除name的文件 listdir(path)列出指定路径的内容 size(name)返回name文件的总大小 '''   @deconstructible class FastDFsstorage(Storage):     def __init__(self,base_url=None,client_conf=None):         """         初始化         :param base_url: 用于构造图片完整路径使用,图片服务器的域名         :param client_conf: FastDFS客户端配置文件的路径         """         if base_url is None:             base_url = settings.FDFS_URL         self.base_url = base_url         if client_conf is None:             client_conf = settings.FDFS_CLIENT_CONF         self.client_conf = client_conf       def _save(self,name,content):         """         在FastDFS中保存文件         :param name: 传入的文件名         :param content: 文件内容         :return: 保存到数据库中的FastDFS的文件名         """         client = Fdfs_client(self.client_conf)         ret = client.upload_by_buffer(content.read())         if ret.get("Status") != "Upload successed.":             raise Exception("upload file Failed")         file_name = ret.get("Remote file_id")         return file_name       def url(self,name):         """         返回文件的完整URL路径         :param name: 数据库中保存的文件名         :return: 完整的URL         """         return self.base_url + name       def exists(self,name):         """         判断文件是否存在,FastDFS可以自行解决文件的重名问题         所以此处返回False,告诉Django上传的都是新文件         :param name:  文件名         :return: False         """         return False

相关文章

显卡天梯图2024最新版,显卡是电脑进行图形处理的重要设备,...
初始化电脑时出现问题怎么办,可以使用win系统的安装介质,连...
todesk远程开机怎么设置,两台电脑要在同一局域网内,然后需...
油猴谷歌插件怎么安装,可以通过谷歌应用商店进行安装,需要...
虚拟内存这个名词想必很多人都听说过,我们在使用电脑的时候...