国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > JS > 正文

AngularJS向后端ASP.NET API控制器上傳文件

2024-05-06 16:27:57
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了AngularJS向后端ASP.NET API控制器上傳文件的相關資料,需要的朋友可以參考下
 

本文實例介紹了前端AngularJS向后端ASP.NET Web API上傳文件的實現方法,具體內容如下

首先服務端: 

public class FilesController : ApiController{  //using System.Web.Http  [HttpPost]  public async Task<HttpResponseMessage> Upload()  {    if(!Request.Content.IsMimeMultipartContent())    {      this.Request.CreateResponse(HttpStatusCode.UnsuportedMediaType);    }        var provider = GetMultipartProvider();    var result = await Request.Content.ReadAsMultipartAsync(provider);        //文件名類似"BodyPart_26d6abe1-3ae1-416a-9429-b35f15e6e5d5"這樣的格式    var originalFileName = GetDeserializedFileName(result.FileData.First());        var uploadFileInfo = new FileInfo(result.FileData.First().LocalFileName);        //如果前端無表單數據,這里注銷    var filleUploadObj = GetFormData<UploadDataModel>(result);        var returnData = "ReturnTest";    return this.Request.CreateResponse(HttpStatusCode.OK, new {returnData});  }    private MultipartFormDataStreamProvider GetMultipartProvider()  {    //圖片的上傳路徑    var uploadFolder = "~/App_Data/FileUploads";        //獲取根路徑    var root = HttpContext.Current.Server.MapPath(uploadFolder);        //創建文件夾    Directory.CreateDirectory(root);    return new MultipartFormDataStreamProvider(root);  }    //從Provider中獲取表單數據  private object GetFormData<T>(MultipartFormDataStreamProvider result)  {    if(result.FormData.HasKeys())    {      var unescapedFormData = Uri.UnescapeDataString(result.FormData.GetValues(0).FirstOrDefault() ?? String.Empty);            if(!String.IsNullOrEmpty(unescapedFormData))      {        return JsonConvert.DeserializeObject<T>(upescapedFormData);      }    }    return null;  }    //獲取反序列化文件名  private string GetDeserializedFileName(MultipartFileData fileData)  {    var fileName = GetFileName(fileData);    return JsonConvert.DeserializedObject(fileName).ToString();  }    //獲取文件名  public string GetFileName(MultipartFileData fileData)  {    return fileData.Headers.ContentDisposition.FileName;  }}

UploadDataModel.cs

public class UploadDataModel{  public string testString1{get;set;}  public string testString2{get;set;}} 

客戶端主頁面:

index.html

<div ng-include="'upload.html'"></div>

引用:

  • angular-file-upload-shim.js
  • angular.js
  • angular-file-upload.js
  • angular-cookies.js
  • angular-resource.js
  • angular-sanitize.js
  • angular-route.js
  • app.js
  • upload.js

upload.html部分視圖頁用來接受文件。

upload.html

<div ng-controller="UploadCtrl"  <input type="file" ng-file-select="onFileSelect($files)" multiple></div>

app.js模塊依賴和全局配置。

app.js

'use strict'angular.module('angularUploadApp',[  'ngCookies',  'ngResource',  'ngSanitize',  'ngRoute',  'angularFileUpload']).config(function($routeProvider){  $routeProvider    .when('/', {      templateUrl: 'upload.html',      controller: 'UploadCtrl'    })    .otherwise({      resirectTo: '/'    })})

控制器提供上傳和取消上傳的方法。

upload.js

'use strict';angular.module('angularUploadApp')  .controller('UploadCtrl', function($scope, $http, $timeout, $upload){    $scope.upload = [];    $scope.fileUploadObj = {testString1: "Test ring 1", testString2: "Test string 2"};        $scope.onFileSelect = function ($files) {      //$files: an array of files selected, each file has name, size, and type.      for (var i = 0; i < $files.length; i++) {        var $file = $files[i];        (function (index) {          $scope.upload[index] = $upload.upload({            url: "./api/files/upload", // webapi url            method: "POST",            data: { fileUploadObj: $scope.fileUploadObj },            file: $file          }).progress(function (evt) {            // get upload percentage            console.log('percent: ' + parseInt(100.0 * evt.loaded / evt.total));          }).success(function (data, status, headers, config) {            // file is uploaded successfully            console.log(data);          }).error(function (data, status, headers, config) {            // file failed to upload            console.log(data);          });        })(i);      }    }    $scope.abortUpload = function (index) {      $scope.upload[index].abort();    }  })

以上就是前端AngularJS向后端ASP.NET Web API上傳文件的實現方法,希望對大家的學習有所幫助。



注:相關教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 理塘县| 永康市| 聂拉木县| 平罗县| 义乌市| 通山县| 灵宝市| 拜城县| 张家界市| 西藏| 黄骅市| 鄂托克旗| 巴东县| 天长市| 忻城县| 凭祥市| 延吉市| 德清县| 大名县| 米泉市| 通河县| 聂拉木县| 杭锦后旗| 固安县| 双桥区| 社会| 钦州市| 康乐县| 桃园市| 和林格尔县| 会理县| 昌都县| 万源市| 汉中市| 蓬溪县| 交口县| 德庆县| 平和县| 武城县| 诸暨市| 岢岚县|