theo dõi

Gần nhất :

Tags

Thống kê câu hỏi

Chuyên mục : Lập trình
Topic : Asp.Net MVC
Hỏi lúc:
Lượt xem: 2,731

Tải tập tin trong asp.net mvc5 ?

Phạm Chí Công Phạm Chí Công
 08  01  01
05 bình chọn hữu ích bởi Võ Thế Phúc, Trần Phượng Vy Võ Huy Phong ... (tất cả)

Hi all

Mình muốn tải lên tập tin trong asp.net-MVC. Làm thế nào mình có thể tải lên các tập tin bằng cách sử dụng input file trong html?

2,731 xem 07 theo dõi 05 hữu ích hỏi –

Bạn biết ai đó có thể trả lời câu hỏi này?. Bạn có thể giúp đỡ bằng cách tìm những người giỏi nhất:

user user user user user

Dương Quốc Tuấn Dương Quốc Tuấn
 22  01  01
05 bình chọn hữu ích bởi Huỳnh Trung Thành, Bùi Uyên Phương Đặng Vân Thúy ... (tất cả)

Trong đoạn mã dưới đây bạn sẽ tìm thấy một số tính năng hữu ích khác:

  • kiểm tra nếu tập tin đã được đính kèm
  • kiểm tra nếu kích thước tập tin là 0
  • kiểm tra nếu kích thước tập tin là trên 4 MB
  • kiểm tra nếu kích thước tập tin nhỏ hơn 100 byte
  • kiểm tra định dạng tập tin

Nó có thể được thực hiện thông qua các mã sau:

[HttpPost]
public ActionResult Index(MyViewModel viewModel)
{
    // kiểm tra nếu độ dài tập tin là không hoặc không có tệp đính kèm

    if (Request.Files.Count != 1 || Request.Files[0].ContentLength == 0)
    {
        ModelState.AddModelError("uploadError", "File's length is zero, or no files found");
        return View(viewModel);
    }

    // kiểm tra nếu kích thước tập tin là trên 4 MB
    if (Request.Files[0].ContentLength > 1024 * 1024 * 4)
    {
        ModelState.AddModelError("uploadError", "File size can't exceed 4 MB");
        return View(viewModel);
    }

    // nếu kích thước tập tin nhỏ hơn 100 byte
    if (Request.Files[0].ContentLength < 100)
    {
        ModelState.AddModelError("uploadError", "File size is too small");
        return View(viewModel);
    }

    // kiểm tra định dạng tập tin
    string extension = Path.GetExtension(Request.Files[0].FileName).ToLower();

    if (extension != ".pdf" && extension != ".doc" && extension != ".docx" && extension != ".rtf" && extension != ".txt")
    {
        ModelState.AddModelError("uploadError", "Supported file extensions: pdf, doc, docx, rtf, txt");
        return View(viewModel);
    }

    // lấy tên tập tin
    var fileName = Path.GetFileName(Request.Files[0].FileName);

    // lưu trữ các tập tin trong folder ~/App_Data/uploads
    var path = Path.Combine(Server.MapPath("~/App_Data/uploads"), fileName);

    try
    {
        if (System.IO.File.Exists(path))
            System.IO.File.Delete(path);

        Request.Files[0].SaveAs(path);
    }
    catch (Exception)
    {
        ModelState.AddModelError("uploadError", "Can't save file to disk");
    }

    if(ModelState.IsValid)
    {
        return View("Success");
    }

    return View(viewModel);         
}
2,471 xem 05 hữu ích trả lời –
Huỳnh Hồng Đức Huỳnh Hồng Đức
 04  00  01
04 bình chọn hữu ích bởi Võ Ðình Ngân, Ngô Ngọc Khuê Võ Thanh Thiên ... (tất cả)

Trước hết bạn tạo đoạn mã Html:

@using (Html.BeginForm("Index", "Home", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
    <input type="file" name="file" />
    <input type="submit" value="OK" />
}

và sau đó bạn sẽ xử lý để tải lên các tập tin:

public class UploadController : Controller
{
    public ActionResult Index()
    {
        return View();
    }

    // Xử lý post và tải tập tin
    [HttpPost]
    public ActionResult Index(HttpPostedFileBase file)
    {
        // Verify that the user selected a file
        if (file != null && file.ContentLength > 0) 
        {
            // lấy tên tệp tin
            var fileName = Path.GetFileName(file.FileName);
            // lưu trữ tệp tin vào folder ~/App_Data/uploads
            var path = Path.Combine(Server.MapPath("~/App_Data/uploads"), fileName);
            file.SaveAs(path);
        }
        // gọi lại Index để hiện thị lại form
        return RedirectToAction("Index");        
    }
}
2,480 xem 04 hữu ích trả lời –
Vũ Gia Huy Vũ Gia Huy
 03  00  02
03 bình chọn hữu ích bởi Hoàng Thiện Khiêm, Lê Tích Ðức Trịnh Xuân Thủy

Trong view:

<form action="Topic/Upload" enctype="multipart/form-data" method="post">
    <input type="file" name="Image">
    <input type="submit" value="Save">
</form>

Các mã code trong controller:

public ActionResult Upload()
{
    foreach (string file in Request.Files)
    {
        var hpf = this.Request.Files[file];
        if (hpf.ContentLength == 0)
        {
            continue;
        }

        string savedFileName = Path.Combine(
            AppDomain.CurrentDomain.BaseDirectory, "PutYourUploadDirectoryHere");
            savedFileName = Path.Combine(savedFileName, Path.GetFileName(hpf.FileName));

        hpf.SaveAs(savedFileName);
    }

...
}
2,472 xem 03 hữu ích trả lời –