2015-08-10 5 views
-1

Я пытаюсь импортировать текстовый файл из angularjs ui и вставлять данные в базу данных. Я могу импортировать файл и читать содержимое файла. Я также могу вставить данные в базу данных с помощью webapi. Но я был заблокирован при передаче данных из пользовательского интерфейса в веб-api. Я не уверен, в чем проблема в этом контексте. Какую ошибку я сделал в этом коде?Angularjs, передающий данные в Asp.Net Web api

КОД UI

<div> 
    <input type="file" id="file" name="file" /> 
    <button ng-click="importMyData()">Import Configuration</button> 
</div> 

<div> 
    {{fileContent}} 
</div> 

Угловая контроллер код

$scope.importMyData = function() { 
    var f = document.getElementById('file').files[0], 
     r = new FileReader(); 
    r.onloadend = function (e) { 
     var binary = ""; 
     var bytes = new Uint8Array(e.target.result); 
     var length = bytes.byteLength; 

     for (var i = 0; i < length; i++) { 
      binary += String.fromCharCode(bytes[i]); 
     } 

     $scope.fileContent = (binary).toString(); 
     importData($scope.fileContent); 

    } 
    r.readAsArrayBuffer(f); 
} 

function importData(fileContent) {  
    importConfigurationService.get({MyImportedData: fileContent}).$promise 
     .then(function (data) { 
      alert(data); 
     }); 
} 

Угловая Код сервиса

app.factory('importMyDataService', ['$resource', 'settings', function ($resource, settings) { 
    return $resource(settings.BaseSetting + '/api/ImportMyData'); 
}]); 

Web Api Код

[Route("ImportMyData")] 
    [HttpGet] 
    public int ImportConfiguration(string MyImportedData) 
    { 
     string importedData = MyImportedData; 
    //Code to save imported data to db here 

     return importStatus; 
    } 
+0

, что у вас есть на угловой стороне в данный момент? –

+0

Его в Jsfiddle. (Это) – Kurkula

+0

@Chandana Пожалуйста, включите соответствующие фрагменты кода в вопрос. JSFiddle и подобные часто помогают, но не должны быть единственной копией. –

ответ

1

Я думаю, вам нужно использовать MultipartMemoryStreamProvider

public class UploadingController : ApiController 
{ 
    public void Post() 
    { 
     if (Request.Content.IsMimeMultipartContent()) 
     { 
      var streamProvider = new MultipartFormDataStreamProvider("c:/uploads/"); 
      var task = Request.Content.ReadAsMultipartAsync(streamProvider).ContinueWith(t => 
       { 
        if (t.IsFaulted || t.IsCanceled) 
         throw new HttpResponseException(HttpStatusCode.InternalServerError); 
       }); 
     else 
     { 
      throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.NotAcceptable, "This request is not properly formatted")); 
     } 
    } 
} 

Следующие статьи должны направить вас в правильном направлении.

http://www.strathweb.com/2012/08/a-guide-to-asynchronous-file-uploads-in-asp-net-web-api-rtm/

http://chris.59north.com/post/Uploading-files-using-ASPNET-Web-Api

https://www.briankeating.net/post/Angularjs-NET-File-Upload

Смежные вопросы