フッターコンテンツにスキップ
IRONPDFの使用

ASP .NET C#でIronPDFを使ってPDFファイルをアップロード、ダウンロードする方法

PDFダウンロードファイルとアップロードの管理は、ASP.NET Core MVC(Model-View-Controller)Webアプリケーションの一般的な要件です。 EF Coreを使用してデータベースのテーブルにドキュメントを保存する場合でも、保存する前にサーバーサイドで処理する場合でも、開発者はPDFドキュメントを効率的に処理する信頼できる方法を必要としています。

この記事では、ASP .NET C#でPDFファイルをアップロードしてダウンロードする方法を、IronPDFを活用して透かしを追加し、ドキュメントをオンデマンドで生成し、.NET Coreプロジェクトとシームレスに統合する方法を示します。

PDF保存用のデータベース テーブルはどのように作成しますか?

最初のステップでは、アップロードされたPDFファイルをバイナリデータとして格納するデータベーステーブルを作成します。 次のコードは、ファイル名、コンテンツタイプ、バイト配列ストレージのプロパティを持つファイル構造を表すモデルクラスです。 これは、EF Coreのファイル永続化に関わる新しいチュートリアルでよく見られるパターンです。

public class PdfFileModel
{
    public int Id { get; set; }
    public string FileName { get; set; }
    public string ContentType { get; set; }
    public byte[] FileData { get; set; }
    public DateTime UploadedDate { get; set; }
}
public class PdfFileModel
{
    public int Id { get; set; }
    public string FileName { get; set; }
    public string ContentType { get; set; }
    public byte[] FileData { get; set; }
    public DateTime UploadedDate { get; set; }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

このモデルは、FileDataがPDFドキュメントをvarbinaryカラムとして格納するデータベーステーブルに直接マッピングされます。 FileNameプロパティは元のファイル名を保持し、ContentTypeはダウンロードPDFファイルをユーザーに提供する際に適切なコンテンツ配置を保証します。 要件に応じて、詳細欄やメタデータフィールドを追加することもできます。

どのようにASP.NET CoreでPDFファイルをデータベースにアップロードできますか?

1つ以上のファイルをアップロードするには、IFormFileパラメータを受け付けるコントローラアクションを作成します。 HTMLフォームのFileUploadコントロールは、enctype="multipart/form-data"を使用して、アップロードされたファイルを適切にサーバーにロードし、PDFバイトが正しく送信されるようにしなければなりません。 名前空間はプロジェクト名と同じになることに注意してください。

namespace UploadPdfs.Controllers
{
public class PdfController : Controller
{
    private readonly ApplicationDbContext _context;
    public PdfController(ApplicationDbContext context)
    {
        _context = context;
    }
    [HttpPost]
    public async Task<IActionResult> Upload(IFormFile file)
    {
        if (file == null || file.Length == 0)
            return BadRequest("No file selected");
        using (var stream = new MemoryStream())
        {
            await file.CopyToAsync(stream);
            var pdfFile = new PdfFileModel
            {
                FileName = file.FileName,
                ContentType = file.ContentType,
                FileData = stream.ToArray(),
                UploadedDate = DateTime.Now
            };
            _context.PdfFiles.Add(pdfFile);
            await _context.SaveChangesAsync();
        }
        return RedirectToAction("Index");
    }
}
}
namespace UploadPdfs.Controllers
{
public class PdfController : Controller
{
    private readonly ApplicationDbContext _context;
    public PdfController(ApplicationDbContext context)
    {
        _context = context;
    }
    [HttpPost]
    public async Task<IActionResult> Upload(IFormFile file)
    {
        if (file == null || file.Length == 0)
            return BadRequest("No file selected");
        using (var stream = new MemoryStream())
        {
            await file.CopyToAsync(stream);
            var pdfFile = new PdfFileModel
            {
                FileName = file.FileName,
                ContentType = file.ContentType,
                FileData = stream.ToArray(),
                UploadedDate = DateTime.Now
            };
            _context.PdfFiles.Add(pdfFile);
            await _context.SaveChangesAsync();
        }
        return RedirectToAction("Index");
    }
}
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

単純なファイルのアップロード

How to Upload and Download PDF Files in ASP .NET C# with IronPDF:画像1 - アップロードされたPDFを表示するUI

ここでは、IFormFileインターフェイスが、アップロードされたファイルのストリームへのアクセスを提供します。 データベースの代わりにファイルシステムのストレージを使用する場合は、ソリューションエクスプローラでプロジェクトを右クリックし、_Add → New Folder_を選択して、アップロードされたファイルを整理することができます。

アップロードには、以下のフォームを使用してください:

<form method="post" action="/Pdf/Upload" enctype="multipart/form-data">
    <button type="submit">Upload</button>
</form>
<form method="post" action="/Pdf/Upload" enctype="multipart/form-data">
    <button type="submit">Upload</button>
</form>
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

アップロードされた透かし入りの PDF ファイルをどのように処理しますか?

アップロードしたPDFファイルをデータベースに保存する前に、IronPDFの透かし機能を使って処理することができます。 これにより、システムに入るすべてのPDFドキュメントに、ブランディング、"DRAFT"ラベル、または"CONFIDENTIAL"スタンプを追加することができます。

[HttpPost]
 public async Task<IActionResult> UploadWithWatermark(IFormFile file)
 {
     if (file == null || file.Length == 0)
         return BadRequest("No file selected");
     // 1. Read the uploaded file into a byte array
     using (var stream = new MemoryStream())
     {
         await file.CopyToAsync(stream);
         byte[] fileBytes = stream.ToArray();
         // 2. Process with IronPDF (Apply Watermark)
         var PDF = new IronPdf.PdfDocument(fileBytes);
         pdf.ApplyWatermark("<h2 style='color:red'>CONFIDENTIAL</h2>", 60, IronPdf.Editing.VerticalAlignment.Middle, IronPdf.Editing.HorizontalAlignment.Center);
         // 3. Define the new file name and path
         string uniqueFileName = Guid.NewGuid().ToString() + "_" + file.FileName;
         string filePath = Path.Combine(_storagePath, uniqueFileName);
         // 4. Save the processed bytes to the file system
         System.IO.File.WriteAllBytes(filePath, pdf.BinaryData);
         // 5. Save metadata to the in-memory list (instead of DB)
         var pdfFile = new PdfFileModel
         {
             Id = _nextId++,
             FileName = file.FileName,
             ContentType = "application/pdf",
             FilePath = filePath, // Store the physical path
             UploadedDate = DateTime.Now
         };
         _pdfFiles.Add(pdfFile);
     }
     return RedirectToAction("Index");
 }
[HttpPost]
 public async Task<IActionResult> UploadWithWatermark(IFormFile file)
 {
     if (file == null || file.Length == 0)
         return BadRequest("No file selected");
     // 1. Read the uploaded file into a byte array
     using (var stream = new MemoryStream())
     {
         await file.CopyToAsync(stream);
         byte[] fileBytes = stream.ToArray();
         // 2. Process with IronPDF (Apply Watermark)
         var PDF = new IronPdf.PdfDocument(fileBytes);
         pdf.ApplyWatermark("<h2 style='color:red'>CONFIDENTIAL</h2>", 60, IronPdf.Editing.VerticalAlignment.Middle, IronPdf.Editing.HorizontalAlignment.Center);
         // 3. Define the new file name and path
         string uniqueFileName = Guid.NewGuid().ToString() + "_" + file.FileName;
         string filePath = Path.Combine(_storagePath, uniqueFileName);
         // 4. Save the processed bytes to the file system
         System.IO.File.WriteAllBytes(filePath, pdf.BinaryData);
         // 5. Save metadata to the in-memory list (instead of DB)
         var pdfFile = new PdfFileModel
         {
             Id = _nextId++,
             FileName = file.FileName,
             ContentType = "application/pdf",
             FilePath = filePath, // Store the physical path
             UploadedDate = DateTime.Now
         };
         _pdfFiles.Add(pdfFile);
     }
     return RedirectToAction("Index");
 }
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

透かし入りPDF

How to Upload and Download PDF Files in ASP .NET C# with IronPDF:イメージ2 - PDFに透かしを入れ、データベースに保存する

IronPdfのApplyWatermarkメソッドはHTMLコンテンツ、不透明度、回転、整列をサポートします。 また、HTTPリクエストや自動化されたワーカータスクをトリガーとしてレポートを作成する場合にも役立ちます。 ヘッダー、フッター、ページ操作など、PDF編集機能を追加してください。

どのようにデータベースからファイルをダウンロードできますか?

データベースに格納されているPDFファイルをダウンロードするには、バイト配列を取得してFileResultとして返すアクションを作成します。 次のコードは、完全なダウンロード機能を示しています:

public IActionResult Download(int id)
{
    var pdfFile = _pdfFiles.FirstOrDefault(f => f.Id == id);
    if (pdfFile == null || !System.IO.File.Exists(pdfFile.FilePath))
        return NotFound();
    byte[] fileBytes = System.IO.File.ReadAllBytes(pdfFile.FilePath);
    return File(fileBytes, pdfFile.ContentType, pdfFile.FileName);
}
public IActionResult Download(int id)
{
    var pdfFile = _pdfFiles.FirstOrDefault(f => f.Id == id);
    if (pdfFile == null || !System.IO.File.Exists(pdfFile.FilePath))
        return NotFound();
    byte[] fileBytes = System.IO.File.ReadAllBytes(pdfFile.FilePath);
    return File(fileBytes, pdfFile.ContentType, pdfFile.FileName);
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

ダウンロードボタン付きPDFファイルの保存

How to Upload and Download PDF Files in ASP .NET C# with IronPDF:画像3 - 保存されているPDFファイルのリスト

ダウンロードボタンを表示する場合、エントリを検索したり、詳細を表示したり、クエリまたはフィルタに基づいて結果を出力したりすることができます。

File メソッドは、適切なコンテンツタイプとファイル名を持つバイト配列を返します。 これは、適切なコンテンツ処分ヘッダを持つユーザーのブラウザでダウンロードをトリガーします。 HTMLヘルパーを使用して、ビューにダウンロードボタンを表示します:

<table>
    @foreach (var item in Model)
    {
        <tr>
            <td>@item.FileName</td>
            <td>@item.UploadedDate</td>
            <td>
                <a href="/Pdf/Download/@item.Id">Download</a>
            </td>
        </tr>
    }
</table>
<table>
    @foreach (var item in Model)
    {
        <tr>
            <td>@item.FileName</td>
            <td>@item.UploadedDate</td>
            <td>
                <a href="/Pdf/Download/@item.Id">Download</a>
            </td>
        </tr>
    }
</table>
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

データベース・ストレージの代わりにファイル・システム・ストレージを使用する場合は、ファイルをサーバー・パスに保存し、ファイル・パスだけをデータベース・テーブルに保存します。

PDFドキュメントをオンデマンドで作成およびダウンロードするには?

既存のファイルを保存するだけでなく、IronPDFのHTMLからPDFへの変換を使って、新しいPDFドキュメントを動的に生成することができます。 このアプローチにより、レポート、請求書、証明書をオンデマンドで作成することができます:

public IActionResult GeneratePdf()
{
    var renderer = new IronPdf.ChromePdfRenderer();
    var PDF = renderer.RenderHtmlAsPdf("<h1>Generated Report</h1><p>Created: " + DateTime.Now + "</p>");
    return File(pdf.BinaryData, "application/pdf", "report.pdf");
}
public IActionResult GeneratePdf()
{
    var renderer = new IronPdf.ChromePdfRenderer();
    var PDF = renderer.RenderHtmlAsPdf("<h1>Generated Report</h1><p>Created: " + DateTime.Now + "</p>");
    return File(pdf.BinaryData, "application/pdf", "report.pdf");
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

PDFはオンデマンドで生成されます。

How to Upload and Download PDF Files in ASP .NET C# with IronPDF:画像4 - 生成されたサンプルPDF

ChromePdfRendererクラスは、HTML文字列をピクセルパーフェクトなPDFドキュメントに変換し、CSSスタイリングとJavaScript実行をサポートします。 このメソッドは、生成されたPDFファイルをブラウザに直接返します。 この方法は、デフォルトのストレージを必要とせず、HTTP GETを介して即座にトリガーされます。

無料トライアルを開始して、マージドキュメントフォーム入力デジタル署名を含む.NET Core PDFハンドリングのためのIronPDFの全機能をお試しください。

結論

ASP.NET CoreでPDFのアップロードとダウンロード機能を実装するには、標準的なファイルハンドリング技術とIronPDFの高度な処理機能を組み合わせます。 透かしを入れ、PDFファイルを生成し、保存し、提供する機能により、アプリケーションはより堅牢で使いやすくなります。

ドキュメントのマージ、メタデータの追加、フォームへの入力、インタラクティブなコンテンツの生成など、さらなる機能を統合することができます。 IronPDFのリファレンスドキュメンテーションをご覧になるか、ブログで新しいチュートリアルをご覧ください。 あなたのコードに次のようなエラーの問題がありますか? 役に立つトラブルシューティング ガイドをチェックしてください。

高度なPDF機能でASP.NET Coreアプリケーションを強化する準備はできましたか? IronPDFライセンスを購入するか、豊富なドキュメントで追加情報を得るか、私たちのチームとチャットするか、特定のプロジェクト要件についてガイダンスを受けてください。

よくある質問

ASP.NET Core MVCアプリケーションでPDFファイルをアップロードする方法を教えてください。

ASP.NET Core MVCアプリケーションでPDFファイルをアップロードするには、IFormFileインターフェースを使用してフォームからファイルデータを取り込み、保存する前にサーバーサイドで処理します。

ASP.NETでPDFファイルをダウンロードする最良の方法は何ですか?

ASP.NETでPDFファイルをダウンロードする最良の方法は、コントローラでFileResultアクションを使用することです。IronPDFはPDFをサーバーサイドで生成、修正し、ダウンロードできるようにします。

ASP.NETを使ってPDFファイルをデータベースに保存できますか?

はい、ファイルをバイト配列に変換し、バイナリラージオブジェクト(BLOB)として保存することで、ASP.NETを使ってPDFファイルをデータベースに保存することができます。IronPdfは保存前にPDFを処理するのに役立ちます。

IronPdfはASP.NETでPDFに透かしを入れる際にどのように役立ちますか?

IronPDFはPDFにテキストや画像の透かしを簡単に追加する機能を提供し、ASP.NETアプリケーションに統合して、ダウンロードや保存の前にドキュメントを変更することができます。

PDFストレージにEF Coreを使用する利点は何ですか?

EF Coreは、効率的なオブジェクトリレーショナルマッピングを可能にし、ASP.NETアプリケーション内でPDFの保存と検索を構造化されたスケーラブルな方法で管理することを容易にします。

ASP.NETアプリケーションでPDFコンテンツを操作することは可能ですか?

IronPdfを使えば、テキスト、画像、メタデータの編集を含むPDFコンテンツの操作が可能です。

ASP.NETでファイルアップロードを安全に処理するには?

ASP.NETでファイルアップロードを安全に処理するには、ファイルタイプを検証し、ファイルサイズを制限し、安全な場所に保存する必要があります。IronPDFのようなライブラリを使用することで、PDFファイル自体の整合性を確保することもできます。

WebアプリケーションでPDFを扱う場合の一般的な課題は何ですか?

よくある課題には、ファイルの互換性の確保、大きなファイルサイズの管理、文書の整合性の維持などがあります。IronPDFはPDFの作成と操作のための堅牢なツールを提供することで、これらを克服するお手伝いをします。

ASP.NETで異なるファイルタイプをPDFに変換できますか?

はい、IronPDFはHTMLや画像ファイルのような様々なファイルタイプをASP.NETアプリケーション内でシームレスにPDFに変換することができます。

ASP.NETでPDFを扱う際のModel-View-Controller(MVC)の役割とは?

MVCパターンは、データ処理(Model)、ユーザーインターフェース(View)、アプリケーションロジック(Controller)を分離することで、PDFを扱うコードを整理するのに役立ち、PDFの機能管理と拡張を容易にします。

カーティス・チャウ
テクニカルライター

Curtis Chauは、カールトン大学でコンピュータサイエンスの学士号を取得し、Node.js、TypeScript、JavaScript、およびReactに精通したフロントエンド開発を専門としています。直感的で美しいユーザーインターフェースを作成することに情熱を持ち、Curtisは現代のフレームワークを用いた開発や、構造の良い視覚的に魅力的なマニュアルの作成を楽しんでいます。

開発以外にも、CurtisはIoT(Internet of Things)への強い関心を持ち、ハードウェアとソフトウェアの統合方法を模索しています。余暇には、ゲームをしたりDiscordボットを作成したりして、技術に対する愛情と創造性を組み合わせています。