Пример #1
0
        public async Task <IActionResult> UploadFiles(IFormFileCollection files, int idFileDescription, string client1CCode, string account1CCode, int clientTimeZone)
        {
            if (clientTimeZone == default)
            {
                return(StatusCode(400, "Не задан часовой пояс клиента"));
            }

            Dictionary <string, byte[]> filesToSend = new Dictionary <string, byte[]>();

            if ((files?.Count ?? 0) > 0)
            {
                foreach (IFormFile file in files)
                {
                    string fileExtension = Path.GetExtension(file.FileName)?.ToUpper();
                    if (
                        fileExtension != ".PDF" &&
                        fileExtension != ".JPEG" &&
                        fileExtension != ".JPG" &&
                        fileExtension != ".GIF" &&
                        fileExtension != ".PNG" &&
                        fileExtension != ".TIF")
                    {
                        return(StatusCode(400, "Допускается загружать файлы только с расширением 'PDF, JPEG, JPG, GIF, PNG, TIF'"));
                    }

                    await using var memoryStream = new MemoryStream();
                    if (file.Length <= 0)
                    {
                        continue;
                    }
                    await file.CopyToAsync(memoryStream);

                    byte[] fileBytes = memoryStream.ToArray();
                    string fileName  = Path.GetFileName(file.FileName);
                    filesToSend.Add(fileName ?? string.Empty, fileBytes);
                }

                if (idFileDescription != default && client1CCode != default && account1CCode != default && filesToSend.Count > 0)
                {
                    try {
                        await _ServiceRegistrar.UploadRegistrarFilesAsync(User.Identity.Name, account1CCode,
                                                                          client1CCode, idFileDescription, filesToSend, clientTimeZone, CancellationToken.None);
                    }
                    catch (Exception exception) {
                        _Logger.LogError(
                            exception,
                            "Не удалось сохранить файл на сервер. Пользователь: {login}, idFileDescription: {idFileDescription}, client1CCode: {client1CCode}," +
                            " account1CCode: {account1CCode}, clientTimeZone: {clientTimeZone}, filesCount {filesCount}, ошибка: {exceptionMessage}",
                            HelperASP.Login(User), idFileDescription, client1CCode, account1CCode, clientTimeZone, files.Count, exception.Message);
                        return(StatusCode(StatusCodes.Status500InternalServerError, exception.Message));
                    }
                }
            }

            return(Ok());
        }
Пример #2
0
        public async Task <IActionResult> Post([FromForm] IFormFileCollection files, [FromForm] int idFileDescription,
                                               [FromForm] string client1CCode, [FromForm] string account1CCode, [FromForm] int clientTimeZone)
        {
            ObjectResult checkResult = PostCheckParams(StatusCode, files, idFileDescription, client1CCode,
                                                       account1CCode, clientTimeZone);

            if (checkResult != default)
            {
                return(checkResult);
            }

            Dictionary <string, byte[]> filesToSend = new Dictionary <string, byte[]>();

            if (files.Count > 0)
            {
                foreach (IFormFile file in files)
                {
                    string fileExtension = Path.GetExtension(file.FileName)?.ToUpper();
                    if (
                        fileExtension != ".PDF" &&
                        fileExtension != ".JPEG" &&
                        fileExtension != ".JPG" &&
                        fileExtension != ".GIF" &&
                        fileExtension != ".PNG" &&
                        fileExtension != ".TIF")
                    {
                        return(StatusCode(StatusCodes.Status400BadRequest, "Допускается загружать файлы только с расширением 'PDF, JPEG, JPG, GIF, PNG, TIF.'"));
                    }

                    await using (var memoryStream = new MemoryStream()) {
                        if (file.Length <= 0)
                        {
                            continue;
                        }

                        await file.CopyToAsync(memoryStream);

                        byte[] fileBytes = memoryStream.ToArray();
                        string fileName  = Path.GetFileName(file.FileName);
                        filesToSend.Add(fileName ?? string.Empty, fileBytes);
                    }
                }

                try {
                    await _ServiceRegistrar.UploadRegistrarFilesAsync(
                        HelperASP.Login(User),
                        account1CCode,
                        client1CCode,
                        idFileDescription,
                        filesToSend,
                        clientTimeZone,
                        CancellationToken.None
                        );
                }
                catch (Exception exception) {
                    _Logger.LogError(
                        exception,
                        "Не удалось сохранить файлы на сервер. Пользователь: {login}," +
                        " Account1CCode: {account1CCode}, Client1CCode: {client1CCode}," +
                        " IdFileDescription: {idFileDescription} , Кол-во файлов {FilesCount}," +
                        " Часовой пояс: {clientTimeZone}, Ошибка: {exceptionMessage}",
                        HelperASP.Login(User), account1CCode, client1CCode, idFileDescription,
                        filesToSend.Count, clientTimeZone, exception.Message);
                    return(StatusCode(StatusCodes.Status500InternalServerError, exception.Message));
                }
            }

            return(Ok());
        }