Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在Asp.Net Web API中使用MultipartFormDataStreamProvider将两个不同格式的文件上载到两个不同的文件路径_C#_Asp.net_Asp.net Mvc_Stream_Asp.net Web Api - Fatal编程技术网

C# 如何在Asp.Net Web API中使用MultipartFormDataStreamProvider将两个不同格式的文件上载到两个不同的文件路径

C# 如何在Asp.Net Web API中使用MultipartFormDataStreamProvider将两个不同格式的文件上载到两个不同的文件路径,c#,asp.net,asp.net-mvc,stream,asp.net-web-api,C#,Asp.net,Asp.net Mvc,Stream,Asp.net Web Api,我的客户端应用程序将通过多部分表单数据流向我发送图像文件和视频文件。我想将图像文件存储在图像文件夹中,将视频文件存储在视频文件夹中 这就是来自客户端的请求的样子 内容配置:表单数据;name=“Photo”;filename=“img9322.JPG” 内容类型:应用程序/八位字节流 内容配置:表单数据;name=“视频”;filename=“sample.avi” 内容类型:应用程序/八位字节流 这是我这边的Api控制器方法 [HttpPost] [ActionName("Upload

我的客户端应用程序将通过多部分表单数据流向我发送图像文件和视频文件。我想将图像文件存储在图像文件夹中,将视频文件存储在视频文件夹中

这就是来自客户端的请求的样子

内容配置:表单数据;name=“Photo”;filename=“img9322.JPG” 内容类型:应用程序/八位字节流

内容配置:表单数据;name=“视频”;filename=“sample.avi” 内容类型:应用程序/八位字节流

这是我这边的Api控制器方法

[HttpPost]
    [ActionName("UploadVideoEntry")]
    public async Task<HttpResponseMessage> UploadVideoEntry()
    {
        // Check if the request contains multipart/form-data.
        if (!Request.Content.IsMimeMultipartContent())
        {
            throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType);
        }

        var folderName = "photos";
        string root = HttpContext.Current.Server.MapPath("~/" + folderName);
        var provider = new MultipartFormDataStreamProvider(root);

        try
        {               

            // Read the form data and return an async task.
            var response = await Request.Content.ReadAsMultipartAsync(provider);              


            return Request.CreateResponse(HttpStatusCode.OK, new ResponseMessage<Object> { success = true, message = "Media Uploaded" });

        }
        catch (System.Exception e)
        {
            return Request.CreateErrorResponse(HttpStatusCode.InternalServerError, e);
        }
    }
[HttpPost]
[ActionName(“UploadVideoEntry”)]
公共异步任务UploadVideoEntry()
{
//检查请求是否包含多部分/表单数据。
如果(!Request.Content.IsMimeMultipartContent())
{
抛出新的HttpResponseException(HttpStatusCode.UnsupportedMediaType);
}
var folderName=“照片”;
string root=HttpContext.Current.Server.MapPath(“~/”+folderName);
var provider=新的MultipartFormDataStreamProvider(根);
尝试
{               
//读取表单数据并返回异步任务。
var response=wait Request.Content.ReadAsMultipartAsync(提供程序);
return Request.CreateResponse(HttpStatusCode.OK,new ResponseMessage{success=true,message=“Media upload”});
}
捕获(System.e例外)
{
返回请求.CreateErrorResponse(HttpStatusCode.InternalServerError,e);
}
}

这将两个文件都存储在photo文件夹中,因为这是我给出的路径。但我不知道如何将这两个文件分开并存储在不同的路径中。如果有人有任何想法,请告诉我?谢谢

请看下页上的示例:

您希望在下载文件后获取文件名并将其移动。我也做过类似的事情。一旦你有了文件名,你就可以使用了

File.Move(currentPath,newPath)
将文件移动到新位置。当前路径是
变量加上文件名。别忘了添加@“\”:

下面是获取文件名的代码

foreach (MultipartFileData file in provider.FileData)
{
    Trace.WriteLine(file.Headers.ContentDisposition.FileName);
    Trace.WriteLine("Server file path: " + file.LocalFileName);
}
我自己的第一步是测试文件名以确定扩展名,然后在找到合适的文件后执行任何您想要的操作,在本例中是移动

foreach (MultipartFileData file in provider.FileData)
{
    Trace.WriteLine(file.Headers.ContentDisposition.FileName);
    Trace.WriteLine("Server file path: " + file.LocalFileName);
}