コード例 #1
0
        public async Task <IHttpActionResult> GetPdf()
        {
            try
            {
                if (!Request.Content.IsMimeMultipartContent())
                {
                    return(BadRequest("Unsupported media type."));
                }

                var provider = await Request.Content.ReadAsMultipartAsync(new InMemoryMultipartFormDataStreamProvider());

                if (!provider.Files.Any())
                {
                    return(BadRequest("You didn't upload any image."));
                }

                var originalFile = provider.Files[0];
                if (!originalFile.Headers.ContentType.ToString().StartsWith("image"))
                {
                    return(BadRequest("You must upload an image."));
                }

                var originalFileName = string.Join(string.Empty, originalFile.Headers.ContentDisposition.FileName.Split(Path.GetInvalidFileNameChars()));
                var fileName         = Guid.NewGuid().ToString();
                var extension        = Path.GetExtension(originalFileName);
                var pdfPath          = $"/Temp/{fileName}.pdf";
                using (var inputStream = await originalFile.ReadAsStreamAsync())
                {
                    ImageResizer.GetImageSize(inputStream, out int width, out int height);
                    if (width > 600 || height > 600)
                    {
                        var resizedImageStream = ImageResizer.ResizeImage(inputStream, 600, 100L);
                        PdfHelper.SaveImageAsPdf(resizedImageStream, pdfPath);
                        if (resizedImageStream != null)
                        {
                            resizedImageStream.Dispose();
                        }
                    }
                    else
                    {
                        PdfHelper.SaveImageAsPdf(inputStream, pdfPath);
                    }

                    // Save original file
                    using (var image = Image.FromStream(inputStream))
                        image.Save(HttpContext.Current.Server.MapPath($"/Temp/{fileName}{extension}"));
                }

                return(Ok(new { url = pdfPath, fileName = $"{fileName}.pdf", folderPath = fileName }));
            }
            catch (Exception ex)
            {
                return(InternalServerError(ex));
            }
        }