c#文件从内存上传

时间:2017-05-16 19:41:45

标签: upload memorystream

我有一段代码可以从内存中上传文件。

如果我使用方法1(从磁盘读取文件),然后代码工作正常。我可以从测试服务器上看到上传的文件。

如果我使用方法2(我想要的方式),使用内存中的数据,文件不会上传到服务器。

我从某个库创建文件,它在memory_stream中,我不想将其保存到磁盘并将其重新加载到内存中。磁盘上的测试文件是从以下代码的内存中创建的:

//code for savigng memory to file
if (AudioStream != null && AudioStream.Length > 0)
{
    string path = $"D:\\temp\\r_123.mp3";
    FileStream fs = new FileStream(path, FileMode.Create);
    AudioStream.Seek(0, SeekOrigin.Begin);
    AudioStream.CopyTo(fs);
    fs.Close();
}



using (Stream AudioStream = new MemoryStream())
{
    // method 1 [working]
    //load into memory from file
    //using (FileStream fs = File.OpenRead(@"D:\Projects\T1.mp3"))
    //{
    //    fs.CopyTo(AudioStream);
    //}
    //end of method 1

    // method 2, not working
    memory_stream.Seek(0, SeekOrigin.Begin);
    memory_stream.CopyTo(AudioStream);
    // end of method 2

    AudioStream.Seek(0, SeekOrigin.Begin);
    using (HttpClient httpClient = new HttpClient())
    {
        using (MultipartFormDataContent form = new MultipartFormDataContent())
        {
            using (var streamContent = new StreamContent(memory_stream))
            {
                using (var imageContent = new ByteArrayContent(streamContent.ReadAsByteArrayAsync().Result))
                {
                    imageContent.Headers.ContentType = MediaTypeHeaderValue.Parse("multipart/form-data");

                    form.Add(imageContent, "file", "cls.mp3");
                    var response = httpClient.PostAsync(to_url, form).Result;
                }
            }
        }
    }
}

有关如何解决此问题的任何想法?请帮忙!

提前致谢!

1 个答案:

答案 0 :(得分:0)

我会回答我自己的问题。没有关于文件上传代码的问题。

问题是上传网址。该网站是一个asp.net网站。它启用了URL友好设置。所以在URL的末尾没有.aspx。

如果我使用.aspx发布到网址,则不会有文件。从URL中删除aspx代码将正常工作。