- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
根据我们的系统所在的环境,它将使用不同的“文件系统”来管理用户上传的文件。例如,在我们的开发环境中,我们使用 Windows 文件系统,但在生产环境中,我们使用 Azure blob 存储。
使用提供者模型,我创建了以下接口(interface):
public interface IFileRepositoryProvider
{
void SaveFile(string fileName, Stream fileStream);
void DeleteFile(string fileName);
bool Exists(string fileName);
Stream GetStream(string fileName);
}
IFileRepositoryProvider
的具体实现封装。问题:
FileStream
还是 MemoryStream
更好?最佳答案
您是否使用 FileStream 或 MemoryStream 或其他流类型并不重要;您的界面应该只接受 Stream,然后可以处理各种不同的输入。
我想说流比字节数组更灵活。不过,需要注意的一件事是,在将流传递到界面之前,您通常必须记住在流上设置position=0。
您还应该考虑异步以及是否要处理正确的流 - 即写入 Azure Blob 存储,同时仍然从客户端接收数据(这对于 Azure 存储 API 的工作方式可能有点棘手)。
我要说的一件事是,您的界面看起来就像您试图使 Azure blob 存储表现得像文件系统一样,重点是文件名。 Azure Blob 存储对于文件的名称有一定的限制;本质上,您的“名称”需要进行 URI 编码。我发现更好的方法是接受 Azure Blob 存储有效地处理标识符的想法,然后尝试在文件系统上模拟它。因此,当您“保存”文件时,您将传入一个名称和一个流,并将返回一个字符串,该字符串是一个标识符(它实际上是一个 URI 或 URI 的一部分)。客户端必须存储该标识符,并且在想要检索文件时必须提供该标识符。
这样做的另一个好处是您的实现负责生成标识符,因此可以在标识符中包含 Guid 以避免任何名称冲突。
最后,如果您计划在 Azure Blob 存储中存储大量文件,您应该意识到浏览速度很慢并且几乎无法搜索。因此,为了让支持变得更容易,请仔细考虑如何构建标识符。虽然从技术上讲 Blob 存储是扁平的,但您可以通过在标识符中包含“/”来模拟文件夹结构。因此,例如,您可以创建一个标识符,例如年+“/”+月+“/”+日+“/”+guid+'/'+Uri.Encode(filename)。或者您可以在标识符中包含一些上下文特定信息。
关于c# - IFile RepositoryProvider 处理上传的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19265215/
如何从 IFile 或绝对路径获取资源? 我尝试过: IWorkspace workspace = ResourcesPlugin.getWorkspace(); IWorkspaceRoot roo
我正在开发一个 Eclipse 插件,在其中我需要从 Eclipse 中的任何类型的 Java 项目中检索方法的名称或只是类。这个想法是创建一个单一的对象来访问项目的每个部分(IProject 扩展)
根据我们的系统所在的环境,它将使用不同的“文件系统”来管理用户上传的文件。例如,在我们的开发环境中,我们使用 Windows 文件系统,但在生产环境中,我们使用 Azure blob 存储。 使用提供
我使用以下代码尝试获取 IFile 对象的完全限定名称。 private String getFullName(IFile file) { IJavaElement element = Java
我有一个 IFile 对象需要用作 java.io.File 对象。我正在使用以下代码进行转换。 file = ifile.getFullPath().toFile(); 但是对 file.exist
我正在做一些序列化,其中还包含需要存储为字符串的 IFile 路径。 我在插件项目中使用这个 IFile。为调试或运行 Eclipse 启动一个新工作区。这个测试工作区的根目录相对于插件文件夹。我的问
我正在开发一个以只读状态加载所有项目文件 (IFile) 的 Eclipse 插件。 ResourceAttributes resAttr = new ResourceAttribut
这是一个 Eclipse 问题,您可以假设所有这些 Eclipse 类的 Java 包是 org.eclipse.core.resources。 我想获取与我拥有的位置 String 相对应的 IFi
我有 org.eclipse.core.runtime.Path 对象。这将具有像 Test/src/jsp 这样的值——其中 Test 是项目名称。我想从中获取该路径中的文件列表,即 IFile[]
我想知道是否可以将文件从 Mathematica 上传到 ifile.it。我见过API ifile.it,但是,我仍然不知道它是如何工作的。此外,我在 Mathematica 中看到的最接近的例子是
我正在创建一组 Eclipse 插件,需要对 xml 进行编码和解码。因此,我创建了自定义生成器来验证这些 xml,每次更改或删除文件时都会执行该生成器。我让生成器在删除时执行,并且更改事件,但我的问
我有一个文件,我想根据某些用户菜单选择来更新该文件。我的代码获取 IFile如果它不存在,则已创建(使用用户的内容),如果存在,则应更新。我当前的代码是: String userString=
我正在编写一个 Eclipse 插件,它会在文件移动或重命名时发出通知。在 Eclipse 中,当您选择移动或重命名文件时,可能会发生这种情况。有趣的是,例如,在重命名中,eclipse 将删除旧文件
我有一个简单的代码编辑器,可以编辑某些源文件,但编辑器必须能够编辑源文件的一部分。我的意思是它必须能够处理文本输入(输入流或字符串或类似的东西)。问题是我还没有找到不需要 IFile 引用的 Docu
我使用以下代码来设置 IFile 的内容: public static IFile updateFile(IFile file, String content) { if (file.exis
我在运行的 eclipse 中安装了一个包 (org.osgi.framework.Bundle)。此包中有一个文件。我有文件的路径,我可以使用 URL url = bundle.getEntry("
我已经询问过执行全文搜索的最佳算法/实践,现在我想决定使用哪个。在过去的几天里,我已经彻底阅读了这个主题,但没有任何经验,我仍然需要帮助来找出满足我需求的最佳工具,这就是这个问题的目的。 要考虑的要点
我通过 Eclipse IDE 中的 IFile 实例引用了一个 xml 文件。我知道想要在我的 View 上添加一个操作,在 xml 编辑器中打开文件并导航到特定的行号。有人对如何解决这个问题有任何
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 关闭 11 年前。 Improve th
我想创建 IFile 接口(interface)来打开位于项目或工作区之外的文件。 如何获取IFile接口(interface)? 问候,西蒙 最佳答案 http://wiki.eclipse.org
我是一名优秀的程序员,十分优秀!