記事詳細
- 投稿日
- 2025年10月15日23時51分
-
タイトル
-
Drag&Drop されたファイルをデータベースに登録
- 内容
-
フロントエンド (HTML + JavaScript)
ドラッグアンドドロップでファイルをアップロードするためのHTMLとJavaScriptを用意します。
<div id="dropZone" style="border: 2px dashed #ccc; padding: 20px; text-align: center;">
ドラッグ&ドロップでファイルをアップロード
</div>
<input type="file" id="fileInput" style="display: none;" multiple />
<script>
const dropZone = document.getElementById("dropZone");
const fileInput = document.getElementById("fileInput");
dropZone.addEventListener("dragover", (e) => {
e.preventDefault();
dropZone.style.borderColor = "blue";
});
dropZone.addEventListener("dragleave", () => {
dropZone.style.borderColor = "#ccc";
});
dropZone.addEventListener("drop", (e) => {
e.preventDefault();
dropZone.style.borderColor = "#ccc";
const files = e.dataTransfer.files;
uploadFiles(files);
});
function uploadFiles(files) {
const formData = new FormData();
for (let i = 0; i < files.length; i++) {
formData.append("files", files[i]);
}
fetch("/File/Upload", {
method: "POST",
body: formData,
})
.then(response => response.json())
.then(data => alert("アップロード成功!"))
.catch(error => alert("エラーが発生しました"));
}
</script>
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
コントローラー (MVCアクションメソッド)
アップロードされたファイルを受け取り、データベースに保存するアクションメソッドを作成します。
using System;
using System.IO;
using System.Web;
using System.Web.Mvc;
using YourNamespace.Models; // データベースモデルの名前空間
public class FileController : Controller
{
[HttpPost]
public ActionResult Upload(IEnumerable<HttpPostedFileBase> files)
{
if (files != null)
{
foreach (var file in files)
{
if (file != null && file.ContentLength > 0)
{
// ファイルをバイト配列に変換
using (var memoryStream = new MemoryStream())
{
file.InputStream.CopyTo(memoryStream);
byte[] fileData = memoryStream.ToArray();
// データベースに保存
var dbContext = new YourDbContext(); // データベースコンテキスト
var uploadedFile = new UploadedFile
{
FileName = file.FileName,
ContentType = file.ContentType,
Data = fileData,
UploadDate = DateTime.Now
};
dbContext.UploadedFiles.Add(uploadedFile);
dbContext.SaveChanges();
}
}
}
}
return Json(new { success = true });
}
}
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
データベースモデル
ファイルを保存するためのテーブルに対応するモデルを作成します。
using System;
public class UploadedFile
{
public int Id { get; set; }
public string FileName { get; set; }
public string ContentType { get; set; }
public byte[] Data { get; set; }
public DateTime UploadDate { get; set; }
}
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
データベースマイグレーション
Entity Frameworkを使用している場合、マイグレーションを実行してテーブルを作成します。
Add-Migration AddUploadedFileTable
Update-Database
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
ポイント
- ファイルサイズの制限: 大きなファイルを扱う場合、
web.config
でアップロードサイズの制限を設定してください。 - セキュリティ: アップロードされたファイルの種類を検証し、不正なファイルが保存されないように注意してください。
これで、ドラッグアンドドロップでアップロードされたファイルをデータベースに登録する仕組みが完成します!
- ファイルサイズの制限: 大きなファイルを扱う場合、
-
添付画像
-
画像はありません
- Genreのカテゴリ-名
- Views