2015-09-01 2 views
0

На моей странице у меня есть простой клиент чата, который я написал.Как отправить файлы в C# MVC-модель с помощью загрузчика угловых файлов?

В сообщениях есть темы, вторые могут содержать файлы (структура выглядит так: Список тем. -> У каждой темы есть список сообщений. -> У каждого сообщения есть список документов.). Я просто не знаю, как добавить эти файлы в сообщение, так как я не специалист AngularJS (пока!).

Я пользуюсь услугами Azure.

Код:

HTML:

<div class="row"> 
    <div class="col-md-12 text-left"> 
     <button class="btn btn-default margins" ng-click="backToTopicViewSwitch()">Wróć</button> 
     <button class="btn btn-primary margins" ng-click="addNewMessage()">Nowa wiadomość</button> 
    </div> 
    <form novalidate="" name="form"> 
     <div class="form-group"> 
      <textarea class="form-control" placeholder="Treść nowej wiadomości..." type="text" rows="4" name="MsgText" ng-model="dataForNewMessage.MsgText" required=""></textarea> 
      <div> 
       <label>Dodawanie załączników do wiadomości:</label> 
       <input class="form-control" type="file" nv-file-select uploader="uploaderMsg" multiple/> 
      </div> 
     </div> 
    </form> 
</div> 

addNewMessage():

$scope.addNewMessage = function() { 
    $http({ method: 'PUT', url: '/OfferClientData/AddMessageToTopic', data: { response: $scope.data, topicId: $scope.topicMsgsToShow, messageText: $scope.dataForNewMessage.MsgText } }).then(function (d) { 
     $scope.data = d.data; 
     toaster.pop('success', "Dodawanie wiadomości", "Pomyślnie dodano nową wiadomość."); 
    }, function (e) { 
     toaster.pop('error', "Dodawanie wiadomości", "Nastąpił błąd podczas dodawania nowej wiadomości."); 
    }); 
}; 

AddMessageToTopic():

[HttpPut] 
public JsonResult AddMessageToTopic(OfferClientReponse response, int topicId, string messageText) 
{ 
    var newMessage = new InnerCommunicationMessage(); 
    var targetTopic = response.InnerCommunicationTopics[topicId]; 
    newMessage.id = targetTopic.Messages.Count; 
    newMessage.Message = messageText; 
    newMessage.WhenCreated = targetTopic.WhenLastChange = DateTime.Now; 
    UserModel currentUser = (UserModel)Session["user"]; 
    newMessage.WhoCreated = currentUser.FullName; 

    // I know this part is wrong. 
    var filesCount = Request.Files.Count; 
    if (filesCount > 0) 
    { 
     for (int i = 0; i < filesCount; ++i) 
     { 
      var file = Request.Files[i]; 
      if (file != null && file.ContentLength > 0) 
      { 
       var doc = new MessageDocument(); 
       doc.DocumentName = Path.GetFileName(file.FileName); 
       doc.DocumentExtName = Path.GetExtension(file.FileName); 
       doc.FileId = String.Format("{0}{1}{2}", doc.DocumentName, OfferClientReponse.GetGUID(), doc.DocumentExtName); 
       newMessage.Attachments.Add(doc); 
      } 
     } 
    } 

    targetTopic.Messages.Add(newMessage); 
    LeaseService.GetInstance().SaveOfferInContainer(response); 

    return Json(response); 
} 

Я ищу ответ в течение нескольких часов, я не знаю, как подключить этот скрипт AngularJS к MVC. Я хочу, чтобы эти файлы загружались при нажатии кнопки Nowa wiadomość.

У меня есть рабочий файл save to Azure.

Спасибо заранее!

ответ

0

использовать этот код, я думаю, что это будет полезно

$scope.addNewMessage = function() { 
$http({ method: 'POST', url: '/OfferClientData/AddMessageToTopic', data: { response: $scope.data, topicId: $scope.topicMsgsToShow, messageText: $scope.dataForNewMessage.MsgText } }).then(function (d) { 
    $scope.data = d.data; 
    toaster.pop('success', "Dodawanie wiadomości", "Pomyślnie dodano nową wiadomość."); 
}, function (e) { 
    toaster.pop('error', "Dodawanie wiadomości", "Nastąpił błąd podczas dodawania nowej wiadomości."); 
}); 

};