アップロードしてPDFファイルをダウンロードする
私のプロジェクトアプリケーションのほとんどはビジネス関連であり、私はまだそのようなアプリケーションを作成する予定です.
以下は、ASPを使用して、単純なサンプルアプリケーションです.請求書管理システムのPDFファイルをアップロード/ダウンロードしてください.
アプリケーションのGithubレポはこちらです.https://github.com/zoltanhalasz/UploadFile
また、アプリケーションをテストすることができますオンラインです.https://uploadfile.zoltanhalasz.net/
必要条件: ASPの初心者/中間のかみそりページ.NETコア、ここの研究材料を見てくださいhttps://mydev-journey.blogspot.com/2019/11/razor-pages-not-for-shaving.html
中間のC いくつかの基本エンティティフレームワークコア. 私の学問の源泉は アップロードのためのMVCバージョンhttps://tutexchange.com/how-to-upload-files-and-save-in-database-in-asp-net-core-mvc/
ダウンロードは、様々なCを使用して発見された.
まず、uploadfileという名前のデータベースを作成し、次にテーブルを作成します.
ASPを作成します.プロジェクトページ
. NETコアバージョン3.1
データベースを使用してデータベースに足場を作ります
https://marketplace.visualstudio.com/items?itemName=ErikEJ.EFCorePowerTools または単に必要なデータ構造を追加している私のデータフォルダをコピー
代わりに、より伝統的なcaffoldingメソッドを使用できます.https://www.entityframeworktutorial.net/efcore/create-model-for-existing-database-in-ef-core.aspx
モデルとDBContext(UploadFileContextという)がデータフォルダーに格納されていることを確認します.
起動に追加します.このメソッドは、
ページCSHTMLファイルには、ダウンロード、アップロード、削除機能と共にインボイスのリストが含まれます https://github.com/zoltanhalasz/UploadFile/blob/master/UploadFile/Pages/Index.cshtml PageModelクラスには以下のメソッドが含まれます: A . PDFファイルをデータベースからダウンロードします
参照https://github.com/zoltanhalasz/UploadFile/blob/master/UploadFile/Pages/Create.cshtml
and
https://github.com/zoltanhalasz/UploadFile/blob/master/UploadFile/Pages/Create.cshtml.cs
PDFファイルアップロードに役立つアップロードページを作成します
これには、フォームのHTMLタグを含むマークアップ、cshtmlファイルがあります.
以下は、ASPを使用して、単純なサンプルアプリケーションです.請求書管理システムのPDFファイルをアップロード/ダウンロードしてください.
アプリケーションのGithubレポはこちらです.https://github.com/zoltanhalasz/UploadFile
また、アプリケーションをテストすることができますオンラインです.https://uploadfile.zoltanhalasz.net/
必要条件:
まず、uploadfileという名前のデータベースを作成し、次にテーブルを作成します.
CREATE TABLE [dbo].[Invoices](
[Id] [int] IDENTITY(1,1) NOT NULL,
[Number] [int] NOT NULL,
[Date] [datetime] NOT NULL,
[Value] [decimal](18, 2) NOT NULL,
[Attachment] [varbinary](max) NULL,
CONSTRAINT [PK_Invoices] PRIMARY KEY CLUSTERED ([Id] ASC) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
アプリケーションの作成手順ASPを作成します.プロジェクトページ
. NETコアバージョン3.1
データベースを使用してデータベースに足場を作ります
https://marketplace.visualstudio.com/items?itemName=ErikEJ.EFCorePowerTools または単に必要なデータ構造を追加している私のデータフォルダをコピー
代わりに、より伝統的なcaffoldingメソッドを使用できます.https://www.entityframeworktutorial.net/efcore/create-model-for-existing-database-in-ef-core.aspx
モデルとDBContext(UploadFileContextという)がデータフォルダーに格納されていることを確認します.
起動に追加します.このメソッドは、
services.AddDbContext<UploadfileContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection"),
sqlServerOptions => sqlServerOptions.CommandTimeout(100))
);
インボイスのリストを表示するインデックスページを作成するpublic async Task<IActionResult> OnPostDownloadAsync(int? id)
{
var myInv = await _context.Invoices.FirstOrDefaultAsync(m => m.Id == id);
if (myInv == null)
{
return NotFound();
}
if (myInv.Attachment== null)
{
return Page();
}
else
{
byte[] byteArr = myInv.Attachment;
string mimeType = "application/pdf";
return new FileContentResult(byteArr, mimeType)
{
FileDownloadName = $"Invoice {myInv.Number}.pdf"
};
}
}
データベースからの添付ファイルの削除public async Task<IActionResult> OnPostDeleteAsync(int? id)
{
var myInv = await _context.Invoices.FirstOrDefaultAsync(m => m.Id == id);
if (myInv == null)
{
return NotFound();
}
if (myInv.Attachment == null)
{
return Page();
}
else
{
myInv.Attachment = null;
_context.Update(myInv);
await _context.SaveChangesAsync();
}
Invoices = await _context.Invoices.ToListAsync();
return Page();
}
請求書データを作成するページを追加します(かみそりページ足場を介して行うことができます)参照https://github.com/zoltanhalasz/UploadFile/blob/master/UploadFile/Pages/Create.cshtml
and
https://github.com/zoltanhalasz/UploadFile/blob/master/UploadFile/Pages/Create.cshtml.cs
PDFファイルアップロードに役立つアップロードページを作成します
これには、フォームのHTMLタグを含むマークアップ、cshtmlファイルがあります.
page
@model UploadFile.Pages.UploadModel
@{
}
<h1>Upload Invoice</h1>
<hr />
<div class="row">
<div class="col-md-4">
<form method="post" enctype="multipart/form-data">
<div class="form-group">
<div class="col-md-10">
<p>Upload file</p>
<input type="hidden" asp-for="@Model.ID" value="@Model.myID" />
<input asp-for="file" class="form-control" accept=".pdf" type="file" />
</div>
</div>
<div class="form-group">
<div class="col-md-10">
<input class="btn btn-success" type="submit" value="Upload" />
</div>
</div>
</form>
</div>
</div>
<div>
<a asp-page="Index">Back to List</a>
</div>
PageModelクラスでは、アップロードされたファイルを処理するハンドラがあります.public class UploadModel : PageModel
{
private readonly UploadfileContext _context;
public UploadModel(UploadfileContext context)
{
_context = context;
}
public int ? myID { get; set; }
[BindProperty]
public IFormFile file { get; set; }
[BindProperty]
public int ? ID { get; set; }
public void OnGet(int? id)
{
myID = id;
}
public async Task<IActionResult> OnPostAsync()
{
if (file != null)
{
if (file.Length > 0 && file.Length < 300000)
{
var myInv = _context.Invoices.FirstOrDefault(x => x.Id == ID);
using (var target = new MemoryStream())
{
file.CopyTo(target);
myInv.Attachment = target.ToArray();
}
_context.Invoices.Update(myInv);
await _context.SaveChangesAsync();
}
}
return RedirectToPage("./Index");
}
}
結果は次のようになります.Reference
この問題について(アップロードしてPDFファイルをダウンロードする), 我々は、より多くの情報をここで見つけました https://dev.to/zoltanhalasz/upload-and-download-pdf-files-to-from-ms-sql-database-using-razor-pages-7jhテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol