【问题标题】:ASP FileUpload InputStream and System.IO.File.OpenReadASP FileUpload InputStream 和 System.IO.File.OpenRead
【发布时间】:2014-01-31 06:48:23
【问题描述】:

我有一个 ASP 文件上传,PostedFile.InputStream,它给了我们System.IO.Stream。这个文件流是不是和获取的类似

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

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

【问题讨论】:

  • 这在本地工作吗?
  • 如果使用正确,您应该能够以相同的方式从继承自System.IO.Stream 的任何对象中读取数据。你能展示你用来读取数据的代码吗?例如,一个常见的错误是在使用 Read 方法时忽略返回值。
  • 你能提供更多细节吗?特别是:1)显示您使用“机架空间文件内容保护程序”的代码,2)显示您使用流上传和下载文件的代码。

标签: c# file-upload rackspace


【解决方案1】:

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

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

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

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);

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

【讨论】:

    【解决方案2】:

    这个与 rackspace cloud 一起工作,它可以从客户端上传文件到 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();
    
                }
            }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-09-24
      • 1970-01-01
      • 1970-01-01
      • 2021-09-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多