MVC ajax 上传文件

废话不多说,上代码:

用到的js文件:

jquery.min.js

jquery.easyui.min.js

<input id="fileurl" onclick="$(‘#imageUpLoad‘).click();"/>
<input type="button" value="上传" onclick="document.getElementById(‘form1‘).submit();">   

<div style="display:none; position:absolute; top:0; left:0;">
<iframe name="uploadResponse"></iframe>
    <form id="form1" runat="server" action="/UploadFile/UpLoadImage/" method="post" enctype="multipart/form-data" target="uploadResponse">
        <input type="file" id="imageUpLoad"  name="imageUpLoad" style="display:none;" onchange="$(‘#fileurl‘).attr(‘isLoad‘,‘0‘);">
        <input id="imageType" name="imageType" value="floor" style="display:none;"/>
    </form>
    <script type="text/javascript">
        function CallBack(path) {
            $("#fileurl").attr(‘isLoad‘, ‘1‘).val(path);
            $.messager.alert(‘提示信息‘, ‘上传成功!‘, ‘info‘);
        }
    </script>
</div>

isLoad 属性是我自己添加的属性,用来判断图片是否提交

ps:记得在window.load事件中初始化这个属性,因为低版本的ie不支持<input isLoad="1"/>这种格式

后台代码

using System.Web;
using System.Web.Mvc;public class UploadFileController : Controller
    {
        //
        // GET: /UploadFile/

        public ActionResult Index()
        {
            return View();
        }

        public void UpLoadImage(HttpPostedFileBase imageUpLoad, string imageType)
        {
            string returnFilePath = imageUpLoad.FileName;
            //这里是我自己写的一段创建文件路径并保存的代码,可以直接imageUpLoad.SaveAs("文件路径");来保存
            Helper.SaveFile(imageUpLoad, Helper.FileType.Images, imageType, ref returnFilePath); returnFilePath = returnFilePath.Replace("\\", "/"); Response.Write(string.Format("<script type=‘text/javascript‘>window.parent.CallBack(‘" + returnFilePath + "‘);</script>"));
        }
    }
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.IO;

public class Helper
{  

    /// <summary>
    /// 文件类型
    /// </summary>
    public enum FileType {
      Images,
      Files
    }

    public static bool SaveFile(HttpPostedFileBase f, FileType ft, string separator,ref string path)
        {
            try
            {
                string FilePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, ft.ToString());
                if (!Directory.Exists(FilePath))
                    Directory.CreateDirectory(FilePath);

                FilePath = Path.Combine(FilePath, separator);
                if (!Directory.Exists(FilePath))
                    Directory.CreateDirectory(FilePath);

                FilePath = Path.Combine(FilePath, path);
                f.SaveAs(FilePath);
                path = Path.Combine(ft.ToString(), separator, path);
                return true;
            }
            catch (Exception ex){
                LogHelper.Error(ex);
            }
            return false;
        }
}

这里主要说明一下html界面form的参数:

action : 你的mvc处理文件上传的路径

method:提交方式

enctype:这个一定要写对“multipart/form-data”

target:值“uploadResponse”表示回传的接收页面地址,这里是一个iframe,避免了回传刷新页面

后台cs代码说明:

UpLoadImage:方法名要和地址一致参数:
HttpPostedFileBase imageUpLoad  
imageUpLoad 应该是上传文件控件的name值
string imageType

同上iamgeType 为文本控件的name值如果你有多个参数需要传递到后台,可以按照这个格式自定义参数个数

当然还有一种方法可以放函数不带参数使用request来处理传递过来的文件和参数,请网上自行查阅资料。
时间: 2024-12-28 08:24:57

MVC ajax 上传文件的相关文章

asp.net MVC ajax上传文件

普通上传 view: <body> <form id="form1" method="post" action="@Url.Action("UploadFile","Mydemo")" enctype="multipart/form-data"> <input type="file" name="file"/>

C# MVC ajax上传 文件

用普通的ajax提交表单的时候,不能把文件流传到后端去,所以要用到jquery.form.js jquery.form.js到官网下载或者从这里下载:http://pan.baidu.com/s/1c2JS60C view: <script src="~/Scripts/jquery-1.7.1.min.js"></script> <script src="~/Scripts/jquery.form.js"></script

Asp.Net Mvc异步上传文件的方式

今天试了下mvc自带的ajax,发现上传文件时后端action接收不到文件, Request.Files和HttpPostedFileBase都接收不到.....后来搜索了下才知道mvc自带的Ajax不支持文件上传,无奈之下只能用其他的方式 第一种方式:通过 jquery的ajaxSubmit --->(先引入jQuery脚本)需要引入jquery.form.min.js(可以通过NuGet下载) 直接上代码 @{ Layout = null; } <!DOCTYPE html> <

使用ajax上传文件

有时候我们需要在web端向服务器上传文件,以前是使用form的方式进行提交,html5中支持直接使用xmlhttprequest上传文件,send对象支持blob对象而文件就是一个blob对象 ajax上传文件 ajax中可以通过参数processData这个参数来控制data是否进行转换,我们将这个参数设置为false就可以使用ajax进行文件的上传操作了 example: $.ajax({ url: "your url", type: "POST", proce

spring mvc(注解)上传文件的简单例子

spring mvc(注解)上传文件的简单例子,这有几个需要注意的地方1.form的enctype=”multipart/form-data” 这个是上传文件必须的2.applicationContext.xml中 <bean id=”multipartResolver” class=”org.springframework.web.multipart.commons.CommonsMultipartResolver”/> 关于文件上传的配置不能少 大家可以看具体代码如下: web.xml &

闲话ajax,例ajax轮询,ajax上传文件

引语:ajax这门技术早已见怪不怪了,我本人也只是就自己真实的经验去总结一些不足道的话.供不是特别了解的朋友参考参考! 本来早就想写一篇关于ajax的文章的,但是前段时间一直很忙,就搁置了,趁着元旦放假,赶紧补上吧! ajax的出现,可以出给用户带来了很好的体验,证据如下: 1.感觉:以前要给用户呈现新的内容,就必须要刷新当前页面,结果往往是这样:用户看着看着,唰...,然后又重头看起,我那个去,这谁受得了; 自从有了ajax后,就是这样的,用户关注哪一块,变化哪一块,我们就更新那一块,完全看不

ajax上传文件

以往我用的上传文件都是Flex写的,最近html页面需要上传页面功能. 相比之下,比flex还是要麻烦一些,问题也多一些.这里记录下: ajax上传文件,我用到了ajaxfileupload.js修正版. <form id="addAttaForm" enctype="multipart/form-data"> <div class="row"> <label for="fileUpload"&g

【原创】AJAX上传文件,formdata表单提交问题

今天遇到一个特别神奇的问题,AJAX上传文件,formdata表单提交问题,后台显示无法获取上传文件. 排查许久发现是formdata.append();时,要先添加file,而后添加其他参数.方可正常工作. 可是却不知到底是和原因.去了火狐开发者社区也未能找到答案. 还望知道的大神赐教一二.

atitit.ajax上传文件的实现原理 与设计

atitit.ajax上传文件的实现原理 与设计 1. 上传文件的三大难题 1 1.1. 本地预览 1 1.2. 无刷新 1 1.3. 进度显示 1 2.  传统的html4  + ajax 是无法直接实现上传文件 1 2.1. 传统的实现方式iframe 2 2.2. html5转码base64 3 2.3. 其它插件FLASH的实现原理 3 3. 上传进度的实现原理 3 3.1. 使用ajax结合服务端的进度返回,比較麻烦 4 4. 本地预览的解决 4 4.1. 用HTML5上传文件 4 5