我如何在表单中使用此文件上载?

时间:2011-05-30 19:25:47

标签: jquery asp.net-mvc-2

嗨,我今天发现这个文件上载,它有点像一个表格我做的手套,我唯一的问题是我如何将此文件上传到服务器?我知道它说它把它放在一个形式但我仍然困惑。

输入脚本我这样使用它,http://plugins.jquery.com/project/custom-file 我的设置看起来像这样。

HTML

<input type="button" class="upload" value="Add A Showreel" />

ACTION

foreach (string item in Request.Files)
{
    count++;
    HttpPostedFileBase file = Request.Files[item];
    if (file != null)
    {


    }
}

我的事情是我不知道我是否应该将文件放在某种隐藏的字段中,或者将request.files用于拾取它?

2 个答案:

答案 0 :(得分:0)

从控制器开始:

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

    [HttpPost]
    public ActionResult Index(HttpPostedFileBase file)
    {
        if (file != null && file.ContentLength > 0)
        {
            // If the user selected a file it will be stored 
            // in the special App_Data folder
            var path = Server.MapPath("~/App_Data");
            var filename = Path.Combine(path, file.FileName);
            file.SaveAs(filename);
        }
        return RedirectToAction("Index");
    }
}

然后是一个观点:

<script src="<%= Url.Content("~/Scripts/jquery-custom-file-input.js") %>" type="text/javascript"></script>
<% using (Html.BeginForm("index", "home", FormMethod.Post, new { enctype = "multipart/form-data", id = "myForm" })) { %>
    <input type="button" class="upload" value="Add a file" />
    <input type="submit" value="Upload" />
<% } %>

最后是一个javascript文件,用于将插件应用于按钮并标记标记:

$(function() {
    $('.upload').file().choose(function (e, input) {
        // The controller action expects the file input to be named "file"
        input.attr('name', 'file');

        // let's hide the ugliness
        input.hide();

        // append the file input to the original form 
        // that we will be posting to the server
        $(input).appendTo('#myForm');
    });
});

在ASP.NET MVC控制器操作中使用Request.Files之前必须阅读博客:Uploading a File (Or Files) With ASP.NET MVC

答案 1 :(得分:-1)

以下是图片上传的示例。我相信你可以修改视频(我假设你的按钮说“Showreel”):

html与你的相同,但这里是C#代码:

foreach (string inputTagName in Request.Files)
{
  HttpPostedFileBase file = Request.Files[inputTagName];
  if (file.ContentLength > 0)
  {
    Byte[] fileByte = new Byte[file.ContentLength];
    file.InputStream.Read(fileByte, 0, file.ContentLength);

    // Add code here to save fileByte to your database.
  }
}

由于我正在使用图像,因此我的数据库有一个图像条目,我将其设置为等于fileByte。为了获取文件,我使用以下代码:

public FileContentResult Image(int id)
{
  Infographic infographic = GetInfographic(id);

  return new FileContentResult(infographic.image, "image/jpeg");
}

在这种情况下,GetInfographic(int id)从具有指定id的数据库返回唯一条目。然后我让函数返回一个FileContentResult,其中包含数据库中条目的图像,我告诉它它是“image / jpeg”。您可以使用herehere列出的MIME内容类型。我使用“image / jpeg”,因为我正在发送图像,但在你的情况下,我会使用“video / mpeg”或类似的东西。