Javascript 在不同服务器上使用web API上传文件

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.

我有一个angular应用程序,我想使用部署在不同服务器上的web api上传一个文件

事实上,我准备了一个在web api上使用html的示例,我成功地上传了他们的文件,但当我尝试从angular应用程序将其上传到不同的服务器跨源时失败了,我也实现了跨源支持

注意:我正在对文件上传进行ajax调用

<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下进行了测试,没有问题

这是我的第一篇帖子,我希望它能帮助很多人。

请查看: