Member 10033441 Ответов: 0

Документ должен быть загружен в загруженном формате ( word(doc, docx) или ppt(ppt, pptx), excel или jpeg, PDF или gif или png)


Всем Привет,

Я пытаюсь загрузить файл, но после загрузки нет никакого контента.Пожалуйста, помогите мне решить эту проблему.Ниже приведен мой код.

Код Веб-API
-------------
[Authorize]
        [HttpPost]
        [Route("downloadStaticDocument")]
        public HttpResponseMessage downloadStaticDocument(OrderItemReview order)
        {

            HttpResponseMessage httpResponseMessage = new HttpResponseMessage();
            string fileName = "";
            string fileExtension = "";
            byte[] dataStream = new byte[0];
            string downloadName = order.itemDetails.staticDocumentName;
            try
            {
                Log.Debug("starting downloadStaticDocument");
                dataStream = Convert.FromBase64String(order.itemDetails.staticDocumentBase64);
                Log.Debug("fetching file names");
                fileName = Path.GetFileNameWithoutExtension(downloadName);
                fileExtension = Path.GetExtension(downloadName);
                Log.Debug("fileName : " + fileName);
                Log.Debug("fileExtension : " + fileExtension);

                httpResponseMessage.Content = new ByteArrayContent(dataStream.ToArray());
                httpResponseMessage.Content.Headers.Add("x-filename", fileName);
                //httpResponseMessage.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
                httpResponseMessage.Content.Headers.ContentType = new MediaTypeHeaderValue(GetMimeType(fileExtension));
                httpResponseMessage.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment");

                string contentType = string.Empty;
                string ext = Path.GetExtension(downloadName).ToLower();
                switch (ext)
                {
                    case ".pdf":
                        contentType = "application/pdf";
                        break;
                    case ".doc":
                    case ".docx":
                        contentType = "application/msword";
                        break;
                    case ".xls":
                    case ".xlsx":
                        contentType = "application/vnd.ms-excel";
                        break;
                    case ".txt":
                        contentType = "text/plain";
                        break;
                    case ".jpg":
                        contentType = "image/JPEG";
                        break;
                    case ".png":
                        contentType = "image/PNG";
                        break;
                    case ".rtf":
                        contentType = "application/rtf";
                        break;
                    default:
                        break;
                }


                httpResponseMessage.Content.Headers.ContentType = new MediaTypeHeaderValue(contentType);

                return httpResponseMessage;
            }
            catch (Exception ex)
            {
                Log.Error(ex);

                return this.Request.CreateResponse(HttpStatusCode.InternalServerError, ex);
            }
        }


Код вызова службы Angularjs
--------------------
var _downloadStaticDocument = function (orderDetails) {
    
        debugger;
        var request = $http({
            method: "post",
            url: serviceBase + "api/orders/downloadStaticDocument",
            data: orderDetails,
            responseType: 'arraybuffer'
            
        });
        return request;
    }


AngularJs скачать код функции
---------------------------------
$scope.downloadStaticDocument = function (orderDetails) {
        debugger;
        $rootScope.isLoading = true;
        $scope.ProcessFileName = orderDetails.itemDetails.productFullName + ".pdf";

        var promise = ordersManagementService.downloadStaticDocument(orderDetails);
            promise.then(function (response) {

                //for IE Compatibility to dowload blob data
                var anchor = angular.element('<a/>');
                var blob = new Blob([response.data]);
                var fileName = orderDetails.itemDetails.productName;
                if (window.navigator && window.navigator.msSaveOrOpenBlob) {
                    window.navigator.msSaveOrOpenBlob(blob);
                    $rootScope.isLoading = false;
                } else {
                    anchor.attr({
                        href: window.URL.createObjectURL(blob),
                        target: '_blank',
                        download: $scope.ProcessFileName
                    })[0].click();
                    $rootScope.isLoading = false;
                }
            
            ngToast.create({
                content: fileName + " Downloaded successfully.",
                className: 'success',
                dismissOnTimeout: true,
                timeout: 6000
            });

        }, function (error) {
            ngToast.create({
                content: error.data.message,
                className: 'error',
                dismissOnTimeout: true,
                timeout: 6000
            });
        });

    }


Что я уже пробовал:

Я не могу определить причину.Не могли бы вы кто нибудь помочь мне в этом

Mehul M Thakkar

вы пробовали отлаживать и видеть ошибки?

Member 10033441

Да..Я пробовал и подозреваю как в нижеприведенной строке
$масштаб.ProcessFileName = "заказано".- технические характеристики -.productFullName + ".формат PDF";

потому что когда я меняю эту строку, как ниже
$масштаб.ProcessFileName = "заказано".- технические характеристики -.productFullName + ".файлы DOCX"; затем он загружает файл docx.
Поэтому, пожалуйста, помогите мне написать условие для проверки типа файла перед загрузкой.Если вам нужна какая-то дополнительная информация, то она очень ценна.

Member 10033441

Может ли какой-нибудь орган, пожалуйста, изучить этот вопрос

0 Ответов