在客户端创建文件并发送到服务器

时间:2017-05-11 13:12:16

标签: angularjs file model-view-controller

我想使用Angular或Javascript在客户端创建一个文件并将其发送到服务器。 使用MVC控制器我的服务器功能是

 public void SavePivotFile(HttpPostedFileBase file)
    {
        try
        {
            if (file.ContentLength > 0)
            {
                var fileName = Path.GetFileName(file.FileName);
                var path = Path.Combine(Server.MapPath("~"), System.Configuration.ConfigurationManager.AppSettings["reportsFolder"].ToString(), fileName);
                file.SaveAs(path);
            }
        }
        catch(Exception e)
        {
            throw;
        }
    }

现在,在我的客户端,我有一个对象,我想像SavePivotFile一样发送文件。我尝试了这个但是没有用。对象'选项'是JSON。

            $http({
                method: 'GET',
                url: '/FileManager/SavePivotFile',
                params: {
                    file: options,
                }
            }).then(function successCallback(response) {
                showNotification('The changes have been saved.', 'info');
            }, function errorCallback(response) {
                showNotification('Failed to save the file.', 'error');
            });

此外,我尝试在发送之前创建新的FormData(),但也无法正常工作。 cat如何选择JSON对象并将其传递给像文件一样的服务器?

1 个答案:

答案 0 :(得分:0)

    //C# Code  
   [HttpPost]
   [Route('FileManager/SavePivotFile')]
  // you can use [Allow(Role)] to allow particular role. Google it!   
  public void SavePivotFile(HttpPostedFileBase file)
{
    try
    {
        if (file.ContentLength > 0)
        {
            var fileName = Path.GetFileName(file.FileName);
            var path = Path.Combine(Server.MapPath("~"), System.Configuration.ConfigurationManager.AppSettings["reportsFolder"].ToString(), fileName);
            file.SaveAs(path);
        }
    }
    catch(Exception e)
    {
        throw;
    }
}



//Angular Code
 $http.post('FileManager/SavePivotFile',options)//Optionsistheobjectuwanttosend 
       .success(function(res){
       //your code. since the c# method isvoid you will not get any response
        })
       .error(function(e){
       //your error handling
        })   

HttpPostedFileBase模型应与选项类似。这样你就可以在c#中访问JSON。

如果有效,请告诉我。