使用(AngularJS 2)和ASP.net MVC Web API上传文件

编程入门 行业动态 更新时间:2024-10-17 15:24:12
本文介绍了使用(AngularJS 2)和ASP MVC Web API上传文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我正在尝试使用AngularJS 2 rc5和asp mvc上传文件. 我找不到在angularjs 2和asp mvc中上传文件的方法.

I'm trying to upload a file with AngularJS 2 rc5 and asp mvc. I cant find a way to upload file in angularjs 2 and asp 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)); observerplete(); } 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('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; }

更多推荐

使用(AngularJS 2)和ASP.net MVC Web API上传文件

本文发布于:2023-11-14 04:12:36,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1586183.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:上传文件   net   ASP   AngularJS   API

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!