ASP FileUpload InputStream和System.IO.File.OpenRead

时间:2013-08-06 13:34:23

标签: c# file-upload rackspace

我上传了一个ASP文件PostedFile.InputStream,它正在向我们提供System.IO.Stream。此文件流是否与获取

类似
System.IO.File.OpenRead("filename");

我有一个Rackspace文件内容保护程序,可以将输入作为Stream获取,使用PostedFile.InputStream时无法显示正确的图像。

2 个答案:

答案 0 :(得分:2)

通常PostedFile.InputStreamSystem.IO.Stream相同。 所以Rackspace不需要任何额外的编码。

您可以使用file.InputStream作为Stream参数来创建Rackspace云文件的对象。

另一种不需要但可以测试的方法是

byte[] buffer = new byte[file.InputStream.Length];
file.InputStream.Seek(0, SeekOrigin.Begin);
file.InputStream.Read(buffer, 0, Convert.ToInt32(file.InputStream.Length));
Stream stream2 = new MemoryStream(buffer);

您也可以将此流用作创建对象的输入。

答案 1 :(得分:0)

这个与rackspace云一起工作,它可以将文件从客户端上传到rackspace云文件。我还使用了文件上传器。

protected void Button1_Click(object sender, EventArgs e)
        {
            var cloudIdentity = new CloudIdentity() { Username = "Rackspace_user_name", APIKey = "Rackspace_api" };
            var cloudFilesProvider = new CloudFilesProvider(cloudIdentity);


            byte[] buffer = new byte[FileUpload1.FileBytes.Length];
            FileUpload1.FileContent.Seek(0, SeekOrigin.Begin);
            FileUpload1.FileContent.Read(buffer, 0, Convert.ToInt32(FileUpload1.FileContent.Length));
            Stream stream2 = new MemoryStream(buffer);
            try
            {
                using (FileUpload1.PostedFile.InputStream)
                {
                    cloudFilesProvider.CreateObject("Containers_name", stream2, FileUpload1.FileName); //blockBlob.UploadFromStream(fileASP.PostedFile.InputStream);
                }
            }

            catch (Exception ex)
            {



    Label1.Text = ex.ToString();

            }
        }