如何使用angular文件上传器将文件发布到c# MVC模型

本文关键字:文件发布 MVC 模型 angular 何使用 文件 | 更新日期: 2023-09-27 18:10:38

在我的页面上,我编写了一个简单的聊天客户端。

有主题,其中包含消息,后者可以包含文件(结构看起来像这样: topics list)。->每个主题都有一个消息列表。->每条消息都有一个文档列表。)。我只是不知道如何将这些文件添加到消息中,因为我不是AngularJS专家(还没有!)。

我正在使用Azure服务。

代码:

:

<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ść按钮时上传。

我确实有工作文件保存到Azure方法。

提前感谢!

如何使用angular文件上传器将文件发布到c# MVC模型

使用这段代码,我想这会很有帮助

$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.");
});

};