2013-01-16 98 views
0

我有一个路径(存储为字符串) - 例如\\documents\doc1.txt。我正在尝试用字符串路径表示的文件初始化HttpPostedFileBase类型的变量。我该怎么做? 我已经看过类似的方法C#:从文件路径初始化HttpPostedFileBase(字符串)

Model.File[count] = File.Open(item.PictureDirectory, FileMode.Open); 

但这些返回System.io.filestream对象。

FileStream file = File.OpenRead(filepath); 

但我该如何将其转换为httppostedfilebase?

我试图做的正是张贴here

回答

0

首先,在其他问题链接,具有需要HttpPostedFileBase作为输入,然后要求你的方法来发送文件自动传输为HttpPostedFileBase,建议您需要重构该方法。在Pommy的例子中,或许输入Stream会更合适?

现在,如果你绝对必须有一个HttpPostedFileBase的实例,这就是你的目标。 The class is abstract,所以你永远不会直接构造它。相反,您需要构建一个继承类。在标准库中,HttpPostedFileWrapper继承,并将HttpPostedFile作为constructor input

但是,这里是擦,HttpPostedFile的构造函数是内部的,所以在System.Web库之外,你不是直接构造一个实例。

您的选项则是:

  1. 找到一个工厂,或在一些System.Web程序等方法,将构造一个HttpPostedFile实例为你(我怀疑是你不会发现)。
  2. 实现您自己的基类继承类HttpPostedFileBase。这应该很简单,它只是一个小类,根据你的代码使用它,你可能甚至不需要实现所有的方法。
  3. 我推荐的方法,如果可能的话 - 将代码重构为而不是使用HttpPostedFileBase,并且用Stream代替。
+0

感谢您的输入。我正在使用html文件上传器来上传和显示上传的文件。如您所知,出于安全目的,当我仅显示现有路径时,文件的路径不会显示。不幸的是,当循环浏览文件时,外观看起来似乎不读取文件上传器中预加载的文件。到目前为止,我使用HttpPostedFileBase读取文件。因此,有了路径,我正在寻找一种方法来初始化循环读取的httppostedfilebase。 – jpo

+0

所以你说你有一个循环显示一个基于HttpPostedFileBase实例集合的文件名列表?为什么不改变循环来获取文件名列表作为输入? – Snixtor

+0

我会试一试。我有一些文件上传者的观点。有些预先加载了文件,其他则没有。循环通过所有文件来抓住它们。我首先尝试了Httppostedfilesbase,因为Web上的大多数资源都使用此文件类型来上传文件。 – jpo