前言

在MVC 中文件的上传,一般都采用控件:

 <h2>IT轮子四——文件上传</h2>
<div>
<input type="file" />
</div>

第一种方式:使用form表单上传

前台代码:

<div>
<form action="/FileUpload/UploadFile" method="post" enctype="multipart/form-data">
<input type="file" name="file" /><br /><br />
<input type="submit" value="提交" />
</form>
</div>

在前台界面,我们需要注意,当采用form提交数据的时候,我们页面中的控件必须要有name属性。否则,后台接收不到数据。

后台代码:

 [HttpPost]
public ActionResult UploadFile() {
try
{
var files = Request.Files;
foreach (string item in files)
{
//可上传多个文件
var file = files[item];
var fileName = file.FileName;
var filePath = Server.MapPath(string.Format("~/{0}", "File"));
//判断路径是否存在
if (!Directory.Exists(filePath))
{
//创建路径
Directory.CreateDirectory(filePath);
}
//保存文件
file.SaveAs(Path.Combine(filePath, fileName));
}
}
catch (Exception ex)
{
throw;
}
return View("Index");
}

好拉,这样就文件就保存到指定的目录拉。

第二种方式:使用Jquery+formdata对象

formdata对象上传文件,其实也上form表单的另一种方式。只是通过juqery进行提交而不是form默认的action。

 <h2 style="color:burlywood">第二种方式:使用Jquery+formdata对象</h2>
<div>
<input type="file" name="file" /><br />
<input type="button" value="提交" id="btnUpload" />
</div>
<script>
$(document).ready(function () {
//给按钮绑定点击事件
$("#btnUpload").on("click", function () {
//声明formdata对象
var formData = new FormData();
//获取上传文件
var files = $("input[name='file']").get().files[];
formData.append("myFile", files);
//这里也可以添加其他参数
formData.append("Name", "Peter");
//通过ajax上传
$.ajax({
url: '/Home/Upload/',
data: formData,
type: 'post',
contentType: false,//这里必须为false
processData: false,//这里必须为false
success: function (obj) {
if (obj.success == ) {
//根据返回json的对象做出提示
alert("上传成功");
}
}
});
})
})
</script>

前端视图

        public ActionResult Upload()
{
//这里的files 和form 都可按第一种上传方式处理、解析上传的文件和数据
var files = Request.Files;
var form = Request.Form;
//do something here //return the josn object
var obj = new
{
success =
};
return Json(obj);
}

后端接收代码

后记

从10月初,确切的说9月29号起,也写了7、8篇技术类文章。有的文章也有几百的阅读量,可评论留言的人却少之又少,点赞、推荐就更没有。如果这些文章确实帮到了你,对你的工作有那么一点点的用,希望路过的兄弟姐妹们可以有赞的点个赞,有推荐的来个推荐,有转载的来个转载,为我这个博客园增添点人气。

谢谢拉

谨以这篇博客鞭策自己。

IT轮子系列(四)——使用Jquery+formdata对象 上传 文件的更多相关文章

  1. 通过jQuery Ajax使用FormData对象上传文件

    FormData对象,是可以使用一系列的键值对来模拟一个完整的表单,然后使用XMLHttpRequest发送这个"表单". 在 Mozilla Developer 网站 使用For ...

  2. 通过jQuery Ajax使用FormData对象上传文件 (转载)

    XMLHttpRequest Level 2 添加了一个新的接口——FormData.与普通的 Ajax 相比,使用 FormData 的最大优点就是我们可以异步上传二进制文件.jQuery 2.0+ ...

  3. [转] 通过jQuery Ajax使用FormData对象上传文件

    FormData对象,是可以使用一系列的键值对来模拟一个完整的表单,然后使用XMLHttpRequest发送这个"表单". 在 Mozilla Developer 网站 使用For ...

  4. HTML5 jQuery+FormData 异步上传文件,带进度条

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <link href ...

  5. 利用formdata对象上传文件时,需要添加的参数

    function doUpload() { var formData = new FormData($( "#uploadForm" )[0]); $.ajax({ url: 'h ...

  6. FormData 对象上传二进制文件

    使用jQuery 利用 FormData 上传文件:http://harttle.com/2016/07/04/jquery-file-upload.html     通过FormData对象可以组装 ...

  7. python中使用multipart/form-data请求上传文件

    最近测试的接口是上传文件的接口,上传单个文件,我主要使用了2种方法~ 接口例如: URL: http://www.baidu.com/*** method:post 参数: { "salar ...

  8. 使用python或robotframework调multipart/form-data接口上传文件

    这几天调一个multipart/form-data类型的接口,遇到点小阻碍.之前同事有使用urllib库写了个类似的方法实现,比较长,想要改的时候发现不太好使.在网上查找发现用requests库做这个 ...

  9. jQuery 关于IE9上传文件无法进入后台问题的原因及解决办法(ajaxfileupload.js第四弹)

    第四弹的诞生完全不在自己最初的计划之中,是有个网友看了先前关于<ajaxfileupload.js系列>的文章后提出的问题,由于自己一直是用chrome浏览器去测试demo,完全忽略IE浏 ...

随机推荐

  1. Android的View类介绍-android的学习之旅(十三)

    view概述 android绝大部分UI组件都放在android.view和android.widght包中,android的虽有UI组件都继承了View类. View类还有一个非常重要的子类:Vie ...

  2. 创建一个QT for Android的传感器应用应用程序(摘自笔者2015年将出的《QT5权威指南》,本文为试读篇)

     这个手册描述了使用Qt Quick面访的方式在Android和ios设备上开发QtQuick应用程序的方法.我们使用Qt Creator实现一个QtQuick应用程序,这个应用程序基于加速器的值 ...

  3. Xcode中Objc动态调用方法同时避免警告的几个办法

    我们在Xcode中使用objc写代码的时候往往会碰到动态调用方法的时候. 如果是静态调用这很常见,不会有任何问题: [self performSelector:@selector(method)]; ...

  4. Linux IPC实践(4) --System V消息队列(1)

    消息队列概述 消息队列提供了一个从一个进程向另外一个进程发送一块数据的方法(仅局限于本机); 每个数据块都被认为是有一个类型,接收者进程接收的数据块可以有不同的类型值. 消息队列也有管道一样的不足:  ...

  5. pyhton exit

    exit("0") is normally out, and means "successful termination" exit("1" ...

  6. 自己动手写web框架----2

    在上一节,我们自己写的web框架,只能运行显示一个HelloWorld.现在我们对其进行一次加工,让他至少能运行一个登陆程序. 首先看login.jsp <%@ page contentType ...

  7. STL中算法分类

    操作对象 直接改变容器的内容 将原容器的内容复制一份,修改其副本,然后传回该副本 功能: 非可变序列算法 指不直接修改其所操作的容器内容的算法 计数算法        count.count_if 搜 ...

  8. Unity3D学习笔记(二)Unity的JavaScript基础

    Update()每帧调用一次LateUpdate()在Update()后执行Awake()系统执行的第一个方法Start()在Awake()之后,Update()之前FixedUpdate()固定更新 ...

  9. Java深拷贝浅拷贝

    首先,Java中常用的拷贝操作有三个,operator = .拷贝构造函数 和 clone()方法.由于Java不支持运算符重载,我们无法在自己的自定义类型中定义operator=.拷贝构造函数大家应 ...

  10. LeetCode之“树”:Sum Root to Leaf Numbers

    题目链接 题目要求: Given a binary tree containing digits from 0-9 only, each root-to-leaf path could represe ...