使用(AngularJS 2)和ASP.net MVC Web API进行文件上载
发布时间:2020-12-17 07:51:46 所属栏目:安全 来源:网络整理
导读:我正在尝试使用AngularJS 2 rc5和asp.net mvc上传文件. 我无法找到一种方法来上传angularjs 2和asp.net mvc中的文件. 最后 解 这项工作对我而言 upload.service.ts文件 import {Injectable}from '@angular/core';import {Observable} from 'rxjs/Rx';@Inject
我正在尝试使用AngularJS 2 rc5和asp.net mvc上传文件.
我无法找到一种方法来上传angularjs 2和asp.net mvc中的文件.
最后
解 这项工作对我而言 upload.service.ts文件 import {Injectable}from '@angular/core'; import {Observable} from 'rxjs/Rx'; @Injectable() export class UploadService { progress$: any; progress: any; progressObserver: any; constructor() { this.progress$= Observable.create(observer => { this.progressObserver = observer }).share(); } makeFileRequest(url: string,params: string[],files: File[]): Observable<any> { return Observable.create(observer => { let formData: FormData = new FormData(),xhr: XMLHttpRequest = new XMLHttpRequest(); for (let i = 0; i < files.length; i++) { formData.append("uploads[]",files[i],files[i].name); } xhr.onreadystatechange = () => { if (xhr.readyState === 4) { if (xhr.status === 200) { observer.next(JSON.parse(xhr.response)); observer.complete(); } else { observer.error(xhr.response); } } }; xhr.upload.onprogress = (event) => { this.progress = Math.round(event.loaded / event.total * 100); this.progressObserver.next(this.progress); }; xhr.open('POST',url,true); var serverFileName = xhr.send(formData); return serverFileName; }); } } 和appcomponnet.ts文件 import {Component } from 'angular2/core'; import {UploadService} from './app.service'; @Component({ selector: 'my-app',template: ` <div> <input type="file" (change)="onChange($event)"/> </div> `,providers: [ UploadService ] }) export class AppComponent { picName: string; constructor(private service:UploadService) { this.service.progress$.subscribe( data => { console.log('progress = '+data); }); } onChange(event) { console.log('onChange'); var files = event.srcElement.files; console.log(files); this.service.makeFileRequest('http://localhost:8182/upload',[],files).subscribe(() => { console.log('sent'); this.picName = fileName; }); } } 和行动方法 public HttpResponseMessage UploadFile() { var file = HttpContext.Current.Request.Files[0]; if (file.ContentLength > 0) { var fileName = Path.GetFileName(file.FileName); var path = Path.Combine(Server.MapPath("~/App_Data/uploads"),fileName); file.SaveAs(path); var content = JsonConvert.SerializeObject(serverFileName,new JsonSerializerSettings { ContractResolver = new CamelCasePropertyNamesContractResolver() }); var response = Request.CreateResponse(HttpStatusCode.OK); response.Content = new StringContent(content,Encoding.UTF8,"application/json"); return response; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- axis,jax-ws,xfire客户端调用分析,以及webservice万能客户端
- 我在页面上有两个模态,(我正在使用bootstrap);点击任何模态
- 如何在一台计算机上使用ssh内的bash脚本
- twitter-bootstrap – d3.js:用glyphicon类附加一个span
- nginx服务器安装及配置文件详解
- angularjs – 如何使用带有角度图的chart.js使用requirejs
- AngularJS Scope 继承解析
- Bootstrap 基础CSS - 表单(Forms)
- angularjs – 将类型为datetime-local的输入绑定到角度2中的
- 我可以在Vagrant bootstrap shell脚本中切换用户吗?