7

我正在尝试将我在数据库中的文件的副本创建为字节数组,我正在寻找最简单的方法来做到这一点,并且在 SO 和其他任何地方,答案似乎是:

File.WriteAllBytes(string newfilepath, byte[] theFile);

但是,我几乎无法使用 File 类中的任何东西,一旦我输入File.智能感知,就会在它下面画一条红线并说:

cannot choose method from method group did you intend to invoke the method?

我意识到这是一个非常笼统的问题,解决方案很可能是一个非常简单的问题,但我一生都无法弄清楚。有任何想法吗?

这是我尝试创建文件的代码:

    var labProcessOrderLetter = from obj1 in context.LabArticles
                                join obj2 in context.ProcessLabs
                                on obj1.ProcessForLabID equals obj2.ID
                                where obj1.ID == _articleId
                                select obj2.LetterAttachment;

    byte[] thePDFLetter = (byte[]) labProcessOrderLetter.FirstOrDefault();

    var uploadPath = Server.MapPath("~/_TEMP/PDF");
    var tempfilename = Guid.NewGuid().ToString();
    var tempfilenameandlocation = Path.Combine(uploadPath, Path.GetFileName(tempfilename));

    File.WriteAllBytes( tempfilenameandlocation, thePDFLetter);

编辑:显然我已经导入了System.IO命名空间,并且在我的项目中没有一个方法或类名为 File,甚至以 File 开头。

4

2 回答 2

20

听起来您有一个对您可见的方法File(例如,在同一个类中)称为. 这将优先于 选择System.IO.File。因此,您需要完全限定名称:

System.IO.File.WriteAllBytes(tempfilenameandlocation, thePDFLetter);

(事实上​​,这个问题已经有足够的线索了。这Controller.File是在范围内)

于 2012-12-19T08:09:05.167 回答
1

控制器已经定义了一个文件,用于以一种很好的方式输出文件。只需使用 System.IO.File 完全限定它

于 2015-11-10T23:41:06.060 回答