这里是前端代码
uni.uploadFile({
url:"http://127.0.0.1:80/API/Shifu/UpImgs",
filePath:"C:\a.webp",
name:"image",
formData:{
'name':'Imgs'
},
header:{
'Content-Type':':multipart/form-data'
},
success:res=>{
console.log(res);
},
fail:err=> {
console.log(err);
}
});
namespace dieshiqiaoAPI.Controllers
{
[ApiController]
[Route("API/[controller]/[Action]")]
public class ShifuController : ControllerBase
{
#region 前端上传数据到这里接口
[HttpPost]
public int UpImgs([FromForm] IFormCollection formCollection)
{
return 555;
//这里asp.net web api 并未做 只是直接做了返回
}
}
}
执行过后调试器Console出现三条错误信息 在下方1. 2. 3.
//1.Access to XMLHttpRequest at 'http://127.0.0.1/API/Shifu/UpImgs' from origin 'http://localhost:8080' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: It does not have HTTP ok status.
//2.{errMsg: 'uploadFile:fail'}
//3. POST http://127.0.0.1/API/Shifu/UpImgs net::ERR_FAILED
在网络上搜索很多答案是说是跨域问题 所以我设置了 asp.net web api 打包好的一个文件配置 这个文件是配置IIS跨域的 但是问题依旧 下方是配置文件
```xml
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<location path="." inheritInChildApplications="false">
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
</handlers>
<aspNetCore processPath="dotnet" arguments=".\dieshiqiaoAPI.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="inprocess" />
</system.webServer>
</location>
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" /> <!--配置了这里-->
<add name="Access-Control-Allow-Headers" value="Content-Type" /><!--配置了这里-->
<add name="Access-Control-Allow-Methods" value="GET, POST, PUT,DELETE,OPTIONS,PATCH" /><!--配置了这里-->
</customHeaders>
</httpProtocol>
</system.webServer>
</configuration>
<!--ProjectGuid: D7EDB42F-42CD-477F-9AEB-311886878D51-->
想正常的把uni-app本地图片上传到IIS服务器上
var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
builder.Services.AddControllers();
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
//在这里设置跨域
builder.Services.AddCors(cor =>
{
cor.AddPolicy("Cors", policy =>
{
policy
.AllowAnyOrigin()
.AllowAnyHeader()
.AllowAnyMethod();
});
});
var app = builder.Build();
// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment())
{
app.UseSwagger();
app.UseSwaggerUI();
app.UseCors("CORS");
}
app.UseHttpsRedirection();
app.UseAuthorization();
app.MapControllers();
//这里调用跨域
app.UseCors("Cors");
app.Run();
在下用的是vs2022 项目是asp.net core web api