博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Angular文件上传---fileUpload的使用
阅读量:6969 次
发布时间:2019-06-27

本文共 6353 字,大约阅读时间需要 21 分钟。

hot3.png

文件上传在系统中是一个很常见的功能,现在将angular文件上传的代码总结一下。在此特别感谢同事陈卫兵提供的思路总结。

1、前端页面

(1)提交的时候用ng-submit进行提交。

(2)form表单的enctype属性改为multipart/form-data

(3)增加一个文件上传的input

 
            
                
                    
×                    
新增信息                                
                    
                        
                                        
                        
                        
                                                    
                    
确定                                    

2、angular中的处理

(1)在define中要引入fileUpload和angularFileUpload模块

配置paths和shimfileUpload: 'scripts/js/file-upload/angular-file-upload',

define(['angular','./basicData_service', 'fileUpload'], function (angular) {    'use strict';    angular.module('apt.basicData.controllers', ['apt.basicData_service', 'angularFileUpload'])

// 表格数据和文件上传事件            $scope.submitMetaData = function () {                $scope.imgObj.RefId = $scope.id;                console.log($scope.imgObj);                var $file = document.getElementById('file-to-upload').files[0];                console.info($file);                $upload.upload({                    url: 'http://localhost:8888/api/ImageMetaData',                    method: "POST",                    data: {data: $scope.imgObj},                    file: $file                }).then(function (response) {                    $scope.getImgMetaData($scope.id)                       $('#ImageMetaFrom').modal('hide');                });            }

3、后台的处理

(1)后台中的数据和文件是分别获取的。

 // POST api/tombskeepingstatus        public virtual HttpResponseMessage Post()        {            if (ModelState.IsValid)            {                if (!Request.Content.IsMimeMultipartContent("form-data"))                    throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType);                var form = HttpContext.Current.Request.Form["data"];                ImageMetaData image = JsonHelper.DeserializeFromJson
(form);//ConvertToModel(form);                //获取表单中的文件                var fileinfo = HttpContext.Current.Request.Files[0];                image.RomotePath = FileLoadHelper.Up(fileinfo);                tasks.SaveOrUpdate(image);                /* var message = new HttpRequestMessage();*/                /*message.Headers.Add("FileName", result.);                message.Headers.Add("Directory", result.Directory);*/                /* return base.Post(value);*/                                HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.Created,image);                return response;            }            else            {                return Request.CreateResponse(HttpStatusCode.BadRequest);            }        }

namespace Apt.MWSGR.Domain.Utils{    using System;    ///     ///     ///     public class JsonHelper    {        ///         /// 序列化        ///         /// 
要序列化的实体        /// 
序列化后的字符串
        public static string SerializeToJson(object obj)        {            //Json.Net            return Newtonsoft.Json.JsonConvert.SerializeObject(obj);        }        /// 
        /// 反序列化        ///         /// 
        /// 
        public static Object DeserializeFromJson(string json)        {            return Newtonsoft.Json.JsonConvert.DeserializeObject(json);        }        /// 
        /// 反序列化        ///         /// 
        /// 
        /// 
        public static T DeserializeFromJson
(string json)        {            return Newtonsoft.Json.JsonConvert.DeserializeObject
(json);        }    }}

namespace Apt.MWSGR.Infrastructure.Utils{    using System.IO;    using System.Web;    public class FileLoadHelper    {        ///         /// 文件根目录        ///         private static readonly string Root = HttpContext.Current.Server.MapPath("~/Files/");        ///         /// 文件上传        ///         /// 
        /// 
        public static string Up(HttpPostedFile file)        {            // 根据MD5,计算存放路径            string result = Md5Helper.GetMd5FromFile(file.InputStream);            result = result.Replace('-', '\\');            string filename = result.Substring(result.LastIndexOf('\\'));            string filePath = Path.Combine(Root, result.Substring(0, result.LastIndexOf('\\') + 1));            string fileType = file.FileName.Substring(file.FileName.LastIndexOf('.'));            Directory.CreateDirectory(filePath);            file.SaveAs(filePath.Trim('\\') + filename + fileType);            return result+fileType;        }    }}

namespace Apt.MWSGR.Infrastructure.Utils{    using System;    using System.IO;    using System.Linq;    using System.Security.Cryptography;    using System.Text;    public class Md5Helper    {        ///         /// 将一个string 通过默认MD5算法得到散列字符串        ///         /// 
源字符串        /// 
散列字符串
        ///         public static string GetMd5FromString(string input)        {            MD5 md5 = MD5.Create();            byte[] buffer = Encoding.UTF8.GetBytes(input);            buffer = md5.ComputeHash(buffer);            md5.Clear();            md5.Dispose();            return BitConverter.ToString(buffer);        }        /// 
        /// 由文件全路径获取一个文件的MD5值,采用默认算法        ///         /// 
文件全路径        /// 
        public static string GetMd5FromFile(string path)        {            string res = "";            //MD5 md5 = MD5.Create();            using (FileStream fs = File.OpenRead(path))            {                //byte[] buffer = md5.ComputeHash(fs);                //md5.Clear();                //md5.Dispose();                //res = BitConverter.ToString(buffer);                res = GetMd5FromFile(fs);            }            //md5.ComputeHash();            return res;        }        /// 
        /// 由Stream得到一个MD5字符串        ///         /// 
Stream        /// 
MD5
        public static string GetMd5FromFile(Stream stream)        {            string res = "";            MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();            byte[] buffer = md5.ComputeHash(stream);            buffer = buffer.Skip(4).Take(8).ToArray();            md5.Clear();            md5.Dispose();            res = BitConverter.ToString(buffer);            return res;        }    }}

转载于:https://my.oschina.net/u/1416844/blog/284770

你可能感兴趣的文章
使用手机作单反相机的遥控器
查看>>
RPC的应用:Apache thrift的ubuntu 14.04的安装与应用
查看>>
Lync 号码处理案例分析
查看>>
Django开发中常用的命令总结
查看>>
邮件服务器的搭建
查看>>
综合技术--解决Intellij IDEA创建maven项目过慢的问题
查看>>
android开源项目框架大全:
查看>>
Bootstrap3.0 栅格系统背后的精妙魔法(Bootstrap3.0的栅格布局系统实现原理)
查看>>
finally的用法,拦截器是Struts2的核心,异常处理
查看>>
解决linux系统CentOS下调整home和根分区大小
查看>>
PHP基础教程 常见PHP错误类型及屏蔽方法
查看>>
11.16
查看>>
微信小程序中rpx与rem单位使用
查看>>
Java中只有按值传递,没有按引用传递!
查看>>
三层交换机配置路由实例
查看>>
负载均衡,NAT,ACL,VTP,DHCP,热备份,路由OSPF
查看>>
阿里云服务器安装微擎系统教程
查看>>
在Windows下如何创建虚拟环境(默认情况下)
查看>>
Linux-Nginx访问控制
查看>>
配置tomact 虚拟主机 博客
查看>>