flight.file是一个高级的zope 3文件小部件,它尽最大努力表现得像其他小部件一样,即使表单由于验证错误而被重新显示。它还内置了对通过tramline快速上传和下载基于apache的文件的支持。

hurry.file的Python项目详细描述


hreach.file字段

文件小部件构建在hurryfile对象之上:

< Buff行情>
>>> from hurry.file import HurryFile
>>> file = HurryFile('foo.txt', 'mydata')
>>> file.filename
'foo.txt'
>>> file.data
'mydata'
>>> file.size
6
>>> f = file.file
>>> f.read()
'mydata'

如果其中两个对象的数据和文件名匹配,则hurryfile对象相等:

< Buff行情>
>>> file1 = HurryFile('foo.txt', 'mydata')
>>> file2 = HurryFile('foo.txt', 'mydata')
>>> file3 = HurryFile('bar.txt', 'otherdata')
>>> file1 == file2
True
>>> file1 != file2
False
>>> file1 == file3
False
>>> file1 != file3
True

我们还可以从类似文件的对象中创建hurryfile对象:

< Buff行情>
>>> from StringIO import StringIO
>>> from zope import component
>>> from hurry.file.interfaces import IFileRetrieval
>>> fileretrieval = component.getUtility(IFileRetrieval)
>>> file = fileretrieval.createFile('bar.txt', StringIO('test data'))
>>> file.filename
'bar.txt'
>>> file.size
9
>>> file.data
'test data'
>>> f = file.file
>>> f.read()
'test data'

它的功能完全相同,但可能更易于使用:

< Buff行情>
>>> from hurry.file import createHurryFile
>>> file = createHurryFile('test2.txt', StringIO('another test file'))
>>> file.filename
'test2.txt'
>>> file.size
17

hurryfile对象通常使用zodb存储文件数据 坚持不懈。但是,文件也可以通过tramline存储。如果 电车线安装在阿帕奇,电车线负责发电 文件的ID,并将文件直接存储在文件系统上。入侵检测系统 然后作为文件数据传递到zodb中。

我们先启用电车线路。

tramline目录结构是一个包含两个子目录的目录, 一个称为"存储库",另一个称为"上载":

< Buff行情>
>>> import tempfile, os
>>> dirpath = tempfile.mkdtemp()
>>> repositorypath = os.path.join(dirpath, 'repository')
>>> uploadpath = os.path.join(dirpath, 'upload')
>>> os.mkdir(repositorypath)
>>> os.mkdir(uploadpath)

我们创建一个tramlinefileretrieval对象来了解这个目录, 并将其注册为实用程序:

< Buff行情>
>>> from hurry.file.file import TramlineFileRetrievalBase
>>> class TramlineFileRetrieval(TramlineFileRetrievalBase):
...    def getTramlinePath(self):
...        return dirpath
>>> retrieval = TramlineFileRetrieval()
>>> component.provideUtility(retrieval, IFileRetrieval)

现在让我们像tramline在上传时那样存储文件:

< Buff行情>
>>> from hurry.file import HurryFile
>>> file = HurryFile('foo.txt', 'mydata')
>>> file.filename
'foo.txt'
>>> file.data
'mydata'
>>> file.size
6
>>> f = file.file
>>> f.read()
'mydata'
0

基础名为"1"的文件(存储在zodb中的数据将是 现在只会创建"1"):

< Buff行情>
>>> from hurry.file import HurryFile
>>> file = HurryFile('foo.txt', 'mydata')
>>> file.filename
'foo.txt'
>>> file.data
'mydata'
>>> file.size
6
>>> f = file.file
>>> f.read()
'mydata'
1

数据现在是"1",指的是真实的文件:

< Buff行情>
>>> from hurry.file import HurryFile
>>> file = HurryFile('foo.txt', 'mydata')
>>> file.filename
'foo.txt'
>>> file.data
'mydata'
>>> file.size
6
>>> f = file.file
>>> f.read()
'mydata'
2

在真实文件中检索文件结果:

< Buff行情>
>>> from hurry.file import HurryFile
>>> file = HurryFile('foo.txt', 'mydata')
>>> file.filename
'foo.txt'
>>> file.data
'mydata'
>>> file.size
6
>>> f = file.file
>>> f.read()
'mydata'
3

我们还可以检索它的大小:

< Buff行情>
>>> from hurry.file import HurryFile
>>> file = HurryFile('foo.txt', 'mydata')
>>> file.filename
'foo.txt'
>>> file.data
'mydata'
>>> file.size
6
>>> f = file.file
>>> f.read()
'mydata'
4

应该可以创建存储在 目录结构直接:

< Buff行情>
>>> from hurry.file import HurryFile
>>> file = HurryFile('foo.txt', 'mydata')
>>> file.filename
'foo.txt'
>>> file.data
'mydata'
>>> file.size
6
>>> f = file.file
>>> f.read()
'mydata'
5

我们现在获得数据的ID:

< Buff行情>
>>> from hurry.file import HurryFile
>>> file = HurryFile('foo.txt', 'mydata')
>>> file.filename
'foo.txt'
>>> file.data
'mydata'
>>> file.size
6
>>> f = file.file
>>> f.read()
'mydata'
6

我们可以检索文件本身:

< Buff行情>
>>> from hurry.file import HurryFile
>>> file = HurryFile('foo.txt', 'mydata')
>>> file.filename
'foo.txt'
>>> file.data
'mydata'
>>> file.size
6
>>> f = file.file
>>> f.read()
'mydata'
7

现在让我们在实用程序中禁用tramline:

< Buff行情>
>>> from hurry.file import HurryFile
>>> file = HurryFile('foo.txt', 'mydata')
>>> file.filename
'foo.txt'
>>> file.data
'mydata'
>>> file.size
6
>>> f = file.file
>>> f.read()
'mydata'
8

我们期望与未安装电车线时的行为相同:

< Buff行情>
>>> from hurry.file import HurryFile
>>> file = HurryFile('foo.txt', 'mydata')
>>> file.filename
'foo.txt'
>>> file.data
'mydata'
>>> file.size
6
>>> f = file.file
>>> f.read()
'mydata'
9

清理:

< Buff行情>
>>> file1 = HurryFile('foo.txt', 'mydata')
>>> file2 = HurryFile('foo.txt', 'mydata')
>>> file3 = HurryFile('bar.txt', 'otherdata')
>>> file1 == file2
True
0

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java希望直接扫描要上传到网页的文档   java JavaFX使对象可见,但不使用(忽略)点击   java LibGdx奇怪的纹理行为   java JavaFx ComboBox在第一次单击时未获得正确的值   api WebDav服务器库最好使用Java   java在Android中维护应用程序状态   java保存在Android中拖放RecyclerView后所做的更改我已经阅读了所有内容   无法读取项目中所需库tomcatembedwebsocket的java存档,或者该存档不是有效的ZIP文件   c#类在系统中有哪些关联?如何在UML中最好地表示它们?   java如何使用bazaar访问两台计算机上的同一文件夹   Java易失性与缓存一致性   java如何解决http11。校长:例外?   java liferaymavenplugin从maven Liferay 6.2.5(6.2 ga6)部署war   安卓的jar for java在哪里。木卫一。文件   java邻接矩阵中BFS的顺序是什么?   虚拟机如何从java启动linux虚拟机?   向DefaultListModel添加元素时java JList未更新   java JMSListener批注无法与REST服务一起使用   java DirectoryStream返回路径的顺序是什么?文件名,上次修改,文件大小?   java DropWizard Hibernate doc想说什么?