Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.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
在Net Core Controller中接收IFileForm并转发给另一个(独立)API_Api_Asp.net Core_.net Core_Upload_Asp.net Core Mvc - Fatal编程技术网

在Net Core Controller中接收IFileForm并转发给另一个(独立)API

在Net Core Controller中接收IFileForm并转发给另一个(独立)API,api,asp.net-core,.net-core,upload,asp.net-core-mvc,Api,Asp.net Core,.net Core,Upload,Asp.net Core Mvc,我有一个Vue.JS应用程序,在其中我将图像上载到NetCore控制器 我正在以下控制器中接收IFileForm: [HttpPost("UpdateContactPhoto")] public async Task<string> UpdateContactPhoto(IFormFile file){ //Forward the original IFileForm to another NetCore API. } [HttpPost(“UpdateContactPhot

我有一个Vue.JS应用程序,在其中我将图像上载到NetCore控制器

我正在以下控制器中接收IFileForm:

[HttpPost("UpdateContactPhoto")]
public async Task<string> UpdateContactPhoto(IFormFile file){ //Forward the original IFileForm to another NetCore API.    }
[HttpPost(“UpdateContactPhoto”)]
公共异步任务UpdateContactPhoto(IFormFile文件){//将原始IFileForm转发到另一个NetCore API。}
在这一点上,一切都正常工作。如果形式完美

我的问题是,我需要将此IFileForm转发到另一个API(独立于此),该API的输入是带有HttpClient PutAsync的IFileForm,但不起作用

有人能帮我吗

感谢您的帮助。

将“此处的目标url”替换为您的目标url:

HttpClient-HttpClient=new-HttpClient();
var streamcontent=newstreamcontent(file.OpenReadStream());
var response=wait httpClient.PutAsync(“此处的目标url”,streamcontent);
参考:

用您的目标url替换“此处的目标url”:

HttpClient-HttpClient=new-HttpClient();
var streamcontent=newstreamcontent(file.OpenReadStream());
var response=wait httpClient.PutAsync(“此处的目标url”,streamcontent);
参考:


您可以使用此示例。请注意,参数名称与添加到
表单数据中的项相同:

使用(var-client=new-HttpClient())
{
client.BaseAddress=新Uri(“http://localhost:57985");
字节[]数据;
使用(var br=new二进制读取器(file.OpenReadStream())
{
data=br.ReadBytes((int)file.OpenReadStream().Length);
}
ByteArrayContent字节=新的ByteArrayContent(数据);
MultipartFormDataContent multiContent=新的MultipartFormDataContent();
添加(字节,“文件”,文件名);
var result=client.PutAsync(“api/v1/FileManager”,多内容);
if(result.StatusCode==HttpStatusCode.OK)
{
//做一些事情
}
}
您还可以使用此代码从
HttpContext
获取文件:

ifformfile file=HttpContext.Request.Form.Files[0];

您可以使用此示例。请注意,参数名称与添加到
表单数据中的项相同:

使用(var-client=new-HttpClient())
{
client.BaseAddress=新Uri(“http://localhost:57985");
字节[]数据;
使用(var br=new二进制读取器(file.OpenReadStream())
{
data=br.ReadBytes((int)file.OpenReadStream().Length);
}
ByteArrayContent字节=新的ByteArrayContent(数据);
MultipartFormDataContent multiContent=新的MultipartFormDataContent();
添加(字节,“文件”,文件名);
var result=client.PutAsync(“api/v1/FileManager”,多内容);
if(result.StatusCode==HttpStatusCode.OK)
{
//做一些事情
}
}
您还可以使用此代码从
HttpContext
获取文件:

ifformfile file=HttpContext.Request.Form.Files[0];

您需要将底层流发送到传出请求主体。表单文件本身只是接收文件上载时的包装器。您需要将底层流发送到传出请求主体。表单文件本身只是接收文件上载时的一个包装器。
OpenReadStream
PutAsync
return
IDisposable
s,因此应使用
包装
。这两个
OpenReadStream
PutAsync
返回
IDisposable
s,因此应进行包装使用