Javascript 在不同服务器上使用web API上传文件
我有一个angular应用程序,我想使用部署在不同服务器上的web api上传一个文件 事实上,我准备了一个在web api上使用html的示例,我成功地上传了他们的文件,但当我尝试从angular应用程序将其上传到不同的服务器跨源时失败了,我也实现了跨源支持 注意:我正在对文件上传进行ajax调用Javascript 在不同服务器上使用web API上传文件,javascript,jquery,angularjs,Javascript,Jquery,Angularjs,我有一个angular应用程序,我想使用部署在不同服务器上的web api上传一个文件 事实上,我准备了一个在web api上使用html的示例,我成功地上传了他们的文件,但当我尝试从angular应用程序将其上传到不同的服务器跨源时失败了,我也实现了跨源支持 注意:我正在对文件上传进行ajax调用 <html data-ng-app="MyApp"> <head> <link rel="stylesheet" href="Styles/bootstrap.min.
<html data-ng-app="MyApp">
<head>
<link rel="stylesheet" href="Styles/bootstrap.min.css">
<title>Index</title>
<script src="Scripts/angular-cookies.js" type="text/javascript"></script>
<script src="Scripts/angular-route.min.js" type="text/javascript"></script>
<script src="Scripts/angular.min.js" type="text/javascript"></script>
<script src="~/Scripts/jquery-1.10.2.min.js"></script>
<script type="text/javascript">
debugger;
$(document).ready(function () {
$("#button1").click(function (evt) {
var files = $("#file1").get(0).files;
if (files.length > 0) {
var data = new FormData();
for (i = 0; i < files.length; i++) {
data.append("file" + i, files[i]);
}
$.ajax({
type: "POST",
url: "http://localhost/WebApi/api/Fileupload/Post",
contentType: false,
crossorigin: true,
processData: false,
data: data,
success: function (messages) {
for (i = 0; i < messages.length; i++) {
alert(messages[i]);
}
},
error: function () {
alert("Error while invoking the Web API");
}
});
}
});
});
</script>
</head>
<body>
<!-- form name and controller declare -->
<form>
<span>Select file(s) to upload :</span>
<input id="file1" name="file1" type="file" multiple="multiple" />
<input id="button1" type="button" value="Upload" />
</form>
</body>
</html>
默认情况下,您所体验到的是浏览器安全功能,它阻止对其他web资源的http请求 如果添加访问控制允许原点的标志,则可以更改此默认行为;访问控制允许web应用程序服务器响应中的方法,包括允许的源资源
您没有指定正在使用的web应用程序软件asp.net、django、node.js等。。。但是,例如,这就是您在中支持它的方式。如果我正确地解决了这个问题,您将使用Microsoft的ASP.NET MVC WebAPI。在这种情况下,您应该使用EnableCORS选项,并在WebAPI配置中设置它,如下所示:
[EnableCors(origins: "*", headers: "*", methods: "*")]
public class ValueController : ApiController
步骤:
1.在package manager控制台中安装Nuget for CORS,如下所示
Install-Package Microsoft.AspNet.WebApi.Cors
二,。在WebApiConfig中添加config.EnableCors
三,。在控制器中添加EnableCors属性,如下所示:
[EnableCors(origins: "*", headers: "*", methods: "*")]
public class ValueController : ApiController
有关更多详细信息,请参阅:我很久以前在互联网上搜索,找到了一种在互联网上上传Angular应用程序的方法。您需要在Vercel.com上拥有一个帐户,该帐户是免费的,然后在您的项目文件夹中编写以下命令:
1- ng build --prod //Generate the dist folder
2- npm install -g now //install the tool
3- now //in our directory "dist\"
4- Set up and deploy -> Yes
5- Introduce our Vercel account
6- Link proyect -> No
7- Set proyect name //Enter, dont write nothing
8- Override settings -> Yes
9- Choose -> Build Command
最后,您将获得一个链接,该链接将在.now.sh中完成。从internet explorer中的任何设备打开此链接,您将在internet上安装应用程序
PS:在vercel.com上,你可以更改DNS等,因为如果你有一个域名,你可以将你的url http:/…now.sh更改为你想要的
该方法在角度8和角度9下进行了测试,没有问题
这是我的第一篇帖子,我希望它能帮助很多人。请查看: