AngularJs附件上传下载

首先:angular-file-upload 是一款轻量级的 AngularJS 文件上传工具,为不支持浏览器的 FileAPI polyfill 设计,使用 HTML5 直接进行文件上传。

第一步:引用angularjs的脚本:ng-file-upload-shim.min.js 和 ng-file-upload.min.js

第二步:在angularjs的controller中注入:ngFileUpload

例如:angular.module(‘liaoyuan.controllers‘, [‘ui.bootstrap‘, ‘ngFileUpload‘, ‘ng.ueditor‘]);

第三部:写代码

1、前台的html代码

 1  <form>
 2         <!-- <input class="form-control update-input" ngf-select type="file" ng-model="file" name="file" readonly="readonly" /> -->
 3         <div class="content">
 4             <label class="update-label">请选择上传的文件位置:</label>
 5
 6             <input class="filename" type="text" readonly="readonly" />
 7             <a href="javascript:;" class="file-a" name="file">
 8                 <input class="file" ngf-select type="file" ng-model="file" name="file" readonly="readonly" />浏览...
 9             </a>
10         </div>
11         <button type="button" class="btn btn-primary update-button" style="" ng-click="submit()">
12             上传
13         </button>
14         <script type="text/javascript">
15                 var file = $(‘.file‘),
16                     aim = $(‘.filename‘);
17                 file.on(‘change‘, function( e ){
18                     var name = e.currentTarget.files[0].name;
19                     aim.val( name );
20                 });
21         </script>
22     </form>

2、angularjs 控制器Controller中的代码

 1 app.controller(‘FileController‘, function ($scope, $uibModalInstance, Upload) {
 2     //取消
 3     $scope.cancel = function () {
 4         $uibModalInstance.dismiss(‘cancel‘);
 5     };
 6     //上传按钮
 7     $scope.submit = function () {
 8         $scope.upload($scope.file);
 9     };
10
11     $scope.upload = function (file) {
12         $scope.fileInfo = file;
13         Upload.upload({
14             //服务端接收
15             method: ‘POST‘,
16             url: ‘http://localhost:56897/api/serviceLogAttachments‘,
17             file: file
18         }).progress(function (evt) {
19             //进度条
20             var progressPercentage = parseInt(100.0 * evt.loaded / evt.total);
21             console.log(‘progess:‘ + progressPercentage + ‘%‘ + evt.config.file.name);
22         }).success(function (newAttachment) {
23             //上传成功
24             $uibModalInstance.close(newAttachment);
25         }).error(function (data, status, headers, config) {
26             //上传失败
27             console.log(‘error status: ‘ + status);
28         });
29     };
30
31
32
33 });

注意:Upload一定要注入

3、后台上传代码

 1 [HttpPost]
 2         public IHttpActionResult PostAttachment()
 3         {
 4             int logId = 1;
 5             HttpContext.Current.Response.ContentType = "application/json";
 6             HttpFileCollection files = HttpContext.Current.Request.Files;
 7             HttpRequestMessage h = new HttpRequestMessage();
 8             var file = files[0];
 9             string fileExt = Path.GetExtension(file.FileName);
10
11             string attachmentName = file.FileName.Substring(0, file.FileName.LastIndexOf("."));
12
13             string fileNewName = attachmentName + DateTime.Now.ToString("yyyyMMddHHmmssfff")+ fileExt;
14
15             string strRelativeDir = "/Upload/服务管理/日志详情附件/";
16
17             string fliePath = HttpContext.Current.Request.MapPath(strRelativeDir);
18             if (!Directory.Exists(fliePath))
19             {
20                 Directory.CreateDirectory(fliePath);
21             }
22             string strSavePath = Path.Combine(fliePath, fileNewName);
23             file.SaveAs(strSavePath);
24 //插入数据库
25             ServiceLogAttachmentService.AddAttachment(attachment);
26             return CreatedAtRoute("DefaultApi", new{id = attachment.AttachmentID}, attachment);
27         }

4、后台下载代码

 1  public HttpResponseMessage GetFile(string url,string fileName)
 2         {
 3             try
 4             {
 5                 var FilePath = System.Web.Hosting.HostingEnvironment.MapPath(@"~/"+ url);
 6                 System.IO.FileStream stream=null;
 7                 stream = new FileStream(FilePath, FileMode.Open);
 8                 HttpResponseMessage response = new HttpResponseMessage(HttpStatusCode.OK);
 9                 response.Content = new StreamContent(stream);
10                 response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
11                 response.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
12                 {
13                     FileName = fileName
14                 };
15                 return response;
16             }
17             catch
18             {
19                 return new HttpResponseMessage(HttpStatusCode.NoContent);
20             }
21         }

注:仅个人理解及笔记,有误的地方请各位大神指正!

时间: 2024-11-05 18:47:17

AngularJs附件上传下载的相关文章

java附件上传下载大字段版

public int up2(Map map) { StringBuffer insertSQL = new StringBuffer(); insertSQL.append("insert T_Sys_Attachment"); insertSQL.append("(Id,A_OwnerId,A_Size,A_Title,A_Body,Type,A_Category,A_OwnerXh"); insertSQL.append(")values(?,?,?

邮件发送超大附件,上传下载特别慢,怎么解决?

目前,已有不少邮箱如QQ邮箱.网易邮箱等支持超大附件,可以发送2G或3G大小的文件.但是诸多邮箱发送超大附件普遍存在以下问题: 首先,邮件发送大文件对文件大小有限制,超过上限的超大附件无法发送:其次,超大附件上传.下载的速度有限,而且速度也不稳定:再次,即便上传成功之后,如果对方的邮箱接收附件的大小也会有限制,甚至会导致邮件发送失败. 作为最常用的办公工具之一,邮箱附件上传下载慢.传输中断.无法发送超大附件等问题,是职场人士的一大困扰.怎么解决这个问题? 推荐一款可以通过邮箱发送超大附件的工具-

angularjs + springmvc 上传和下载

jsp: <form ng-submit="uploadFile()" class="form-horizontal" enctype="multipart/form-data"> <input type="file" name="file" ng-model="document.fileInput" id="file" onchange="

IIS7 上传 下载文件大小限制的设置

IIS7 上传 下载文件大小限制的设置 本文来自IISBOY网 一.找到修改大小的配置文件和配置节点 本文来自IISBOY网 打开你系统盘(我是C盘),找到 C:\Windows\System32\inetsrv\config\schema目录,该目录下有一个IIS_schema.xml,右击打开文件,Ctrl+F,然后输入"     内容来自iisboy <attribute name="maxAllowedContentLength" type="uint

Webwork 学习之路(七)文件上传下载

Web上传和下载应该是很普遍的一个需求,无论是小型网站还是大并发访问的交易网站.WebWork 当然也提供了很友好的拦截器来实现对文件的上传,让我们可以专注与业务逻辑的设计和实现,在实现上传和下载时顺便关注了下框架上传下载的实现,在本篇博文中总结记录如下. 1. 包装 Request 请求 每次客户端请求 Action 时,都会调用 WebWork 调度类 ServletDispatcher.service()方法. 具体过程请参照: http://www.cnblogs.com/java-cl

Struts2学习之文件上传/下载&amp;ValueStack(三)

简介 今天是学习Struts2第三天,也算struts2准备前奏告一段落,提升部分只能在后期深入了解,多看源码,多参阅资料.今天所学的知识点文件上传.下载/ValueStack&OGNL/Struts2标签 文件上传/下载 文件上传简介 a). 企业常用文件上传技术 : jspSmartUpload(主要应用 JSP model1 时代) . fileupload (Apache commons项目中一个组件). Servlet3.0 集成文件上传 Part类 b). Struts2 对文件上传

Dynamic CRM 2013学习笔记(十三)附件上传 / 上传附件

上传附件可能是CRM里比较常用的一个需求了,本文将介绍如何在CRM里实现附件的上传.显示及下载.包括以下几个步骤: 附件上传的web页面 附件显示及下载的附件实体 调用上传web页面的JS文件 实体上r的上传按钮   首先来看一下效果: 先点击上面的上传按钮,然后就会弹出一个上传附件的界面,选择需要上传的文件,填写文件名,点击上传,成功后会在下面的文件grid里显示已上传的文件,双击下面的文件就会打开文件的详细信息: 然后还可以下载文件.   下面来看下实现方法 1. 附件上传的web页面 新建

28、java文件上传下载、邮件收发

文件上传下载 前台: 1. 提交方式:post 2. 表单中有文件上传的表单项: <input type="file" /> 3. 指定表单类型: 默认类型:enctype="application/x-www-form-urlencoded" 文件上传类型:multipart/form-data FileUpload 文件上传功能开发中比较常用,apache也提供了文件上传组件! FileUpload组件: 1. 下载源码 2. 项目中引入jar文件

asp.Net文件的上传下载(2) 转

Asp.net 上传.下载文件 2011-01-08 16:21:48|  分类: .NET |  标签: |举报 |字号大中小 订阅 首先我们要判断用户是否选择了要上传文件,我们可用下面这句实现: if(File1.PostedFile.ContentLength>0)  如果用户有上传的文件,则:   string name = File1.PostedFile.FileName ;//获取输入的文件名字      int i= name.LastIndexOf(".") ;