MVC 上传文件+预览

学习记录    复习用

一、调用了Uploadify插件

Uploadify是JQuery的一个上传插件,实现的效果非常不错,带进度显示。(具体参数百度就是。)

二、上传文件的方法

namespace PM.Myjobweb.Controllers
{
    public class FileOperationsController : Controller
    {
        BLL.pc_attachment bll_attachment = new BLL.pc_attachment();
        //
        // GET: /FileOperations/
        /// <summary>
        /// 上传文件
        /// </summary>
        /// <param name="fileData"></param>
        /// <returns></returns>
        [AcceptVerbs(HttpVerbs.Post)]
        public ActionResult Upload(HttpPostedFileBase fileData)
        {
            if (fileData != null)
            {
                try
                {
                    // 文件上传后的保存路径
                    string filePath = Server.MapPath(Request["folder"] + "\\");
                    if (!Directory.Exists(filePath))
                    {
                        Directory.CreateDirectory(filePath);
                    }
                    string fileName = Path.GetFileName(fileData.FileName);// 原始文件名称
                    string fileExtension = Path.GetExtension(fileName); // 文件扩展名
                    string saveName = Guid.NewGuid().ToString() + fileExtension; // 保存文件名称

                    string url = "/Content/JqueryUpload/upload/" + saveName;

                    fileData.SaveAs(filePath + saveName);
                    if (fileExtension == ".docx" || fileExtension == ".doc" || fileExtension == ".pdf" || fileExtension == ".xlsx")
                        url = "/Content/JqueryUpload/html/" + PM.Common.FilesToHtml.FileToHtml(filePath + saveName, TimeParser.ConvertDateTimeInt(DateTime.Now).ToString(), fileExtension.Substring(1));

                    FilesModel m_files = new FilesModel();
                    m_files.DesName = fileName;
                    m_files.FileExtension = fileExtension;
                    m_files.SaveName = saveName;
                    m_files.Att_Expansion2 = url;

                    Model.pc_attachment m_attachment = new Model.pc_attachment();
                    m_attachment.Att_Name = fileName;
                    m_attachment.Att_Type = fileExtension;
                    m_attachment.Att_Url = saveName;
                    m_attachment.Att_Expansion1 = DateTime.Now.ToString();
                    m_attachment.Att_Expansion2 = url;
                    int resultId = bll_attachment.Add(m_attachment);
                    if (resultId > 0)
                    {
                        m_files.ResultId = resultId;
                        return Json(new { code = 0, msg = m_files });
                    }
                    else
                    {
                        return Json(new { code = -1, msg = m_files });
                    }

                }
                catch (Exception ex)
                {
                    return Json(new { code = -1, Message = ex.Message }, JsonRequestBehavior.AllowGet);
                }
            }
            else
            {

                return Json(new { code = false, Message = "请选择要上传的文件!" }, JsonRequestBehavior.AllowGet);
            }
        }

    }

    public class FilesModel
    {
        public int ResultId { get; set; }
        public string FileExtension { get; set; }
        public string SaveName { get; set; }
        public string DesName { get; set; }
        public string Att_Expansion2 { get; set; }
    }
}

上传文件的方法

三、JS

<script type="text/javascript">
    $(document).ready(function () {
        $("#uploadify").uploadify({
            ‘uploader‘: ‘/Content/JqueryUpload/js/uploadify.swf‘,
            ‘script‘: ‘/FileOperations/Upload‘,
            ‘cancelImg‘: ‘/Content/JqueryUpload/js/cancel.png‘,
            ‘buttonText‘: ‘upload‘,
            ‘folder‘: ‘/Content/JqueryUpload/upload‘,
            ‘queueID‘: ‘fileQueue‘,
//            ‘hideButton‘:true,
            ‘multi‘: true,
            ‘auto‘: true,
            //‘wmode‘: ‘transparent‘,
            ‘onComplete‘: function (event, queueId, fileObj, response, data) {
                var obj = eval("(" + response + ")");
                var oldName = ‘‘;
                var newName = ‘‘;
                var fileType = ‘‘;
                var Att_Expansion2 = ‘‘;
                var id = ‘‘;
                switch (obj.msg.FileExtension) {
                    case ‘.docx‘:
                        fileType = ‘icon-word‘;
                        break;
                    case ‘.doc‘:
                        fileType = ‘icon-word‘;
                        break;
                    case ‘.pdf‘:
                        fileType = ‘icon-pdf‘;
                        break;
                    case ‘.xlsx‘:
                        fileType = ‘icon-excel‘;
                        break;
                    case ‘.jpg‘:
                        fileType = ‘icon-tupian‘;
                        break;
                    case ‘.ppt‘:
                        fileType = ‘icon-ppt‘;
                        break;
                    case ‘.txt‘:
                        fileType = ‘icon-txt‘;
                        break;
                }
                oldName = obj.msg.DesName;
                newName = obj.msg.SaveName;
                id = obj.msg.ResultId;
                Att_Expansion2 = obj.msg.Att_Expansion2;
                var liobj = ‘<li id="add" tag="‘ + id + ‘"><i class="icon-word"></i>"‘ + oldName + ‘"<a target="_blank" href=‘ + Att_Expansion2 + ‘>预览</a><a href="/Content/JqueryUpload/upload/‘ + newName + ‘">下载</a></li>‘;
                $(liobj).appendTo($(‘.annex-list‘));

            }
        });

    });

JS

四、调用

<label>附件</label>
            <ul class="annex-list">
                <li>
                    <input type="file" name="uploadify" id="uploadify" style=" visibility:hidden" /><div id="fileQueue">
                    </div>
                </li>
            </ul>

调用

时间: 2024-11-15 01:17:48

MVC 上传文件+预览的相关文章

ajax上传文件 预览

需要用到:ajaxfileupload <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> <script src="http://libs.baidu.com/jquer

jQuery+HTML5实现上传文件预览

<!DOCTYPE html> <html> <head> <title>HTML5上传图片预览</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <script src="jquery-1.11.2.min.js"></script> </he

js 上传文件预览

1. FILE API html5提供了FIle和FileReader两个方法,可以读取文件信息并读取文件. 2. example <html> <body> <div id="test-image-preview" style="border: 1px solid rgb(204, 204, 204); width: 100%; height: 200px; background-size: contain; background-repeat

servlet实现文件上传,预览,下载和删除

CreateTime--2017年9月4日09:24:59 Author:Marydon 一.准备工作: 1.1 文件上传插件:uploadify: 1.2 文件上传所需jar包:commons-fileupload-1.3.1.jar和commons-io-2.2.jar 1.3 将数据转成JSON对象需要jar包:commons-beanutils-1.8.3.jar.commons-collections-3.2.1.jar.commons-lang-2.6.jar.commons-log

【转】文件上传前预览

网上找到的一份文件上传前预览的代码,转自JavaScript 图片的上传前预览(兼容所有浏览器) <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> <style type="text/css"> #preview, .img, img { w

input file实现多选,限制文件上传类型,图片上传前预览功能

限制上传类型 & 多选:① accept 属性只能与 <input type="file" /> 配合使用.它规定能够通过文件上传进行提交的文件类型. ② multiple 属性规定输入字段可选择多个值. 示例: <!-- image/* 所有图片 image/png png图片 image/jpg jpg图片 image/gif gir动图 application/msword Word文档(.doc) application/vnd.openxmlform

form表单系列中文件上传及预览

文件上传及预览 Form提交 Ajax 上传文件 时机: 如果发送的[文件]:->iframe, jQurey(),伪Ajax 预览 import os img_path = os.path.join('static/img', fafafa.name) with open(img.path, 'wb') as f: for item in fafafa.chunks(): f.write(item) function iframeSubmit(){ $('#ifm1').load(functi

js的FileReader实现图片文件上传、预览

js的FileReader实现图片文件上传.预览 FileReader对象的readAsDataURL方法可以将读取到的文件编码成Data URL.Data URL是一项特殊的技术,可以将资料(例如图片)内嵌在网页之中,不用放到外部文件.使用Data URL的好处是,您不需要额外再发出一个HTTP 请求到服务器端取得额外的资料:而缺点便是,网页的大小可能会变大.它适合应用在内嵌小图片,不建议将大图像文件编码成Data URL来使用.您的图像文件不能够超过浏览器限定的大小,否则无法读取图像文件.1

html之file标签 --- 图片上传前预览 -- FileReader

记得以前做网站时,曾经需要实现一个图片上传到服务器前,先预览的功能.当时用html的<input type="file"/>标签一直实现不了,最后舍弃了这个标签,使用了其他方式来实现了这个功能. 今天无意发现了一个知识点,用html的file标签就能实现图片上传前预览,感觉很棒,记录一下!就是通过file标签和js的FileReader接口,把选择的图片文件调用readAsDataURL方法,把图片数据转成base64字符串形式显示在页面上. 1.闲话少说,测试一下,图片上