当前位置: 首页 > 知识库问答 >
问题:

角文件上传

华凯捷
2023-03-14

我是一个Angular初学者,我想知道如何创建Angular 5文件上传部分,我试图找到任何教程或文档,但我没有看到任何地方。对此有什么想法吗?我试过NG4文件,但对Angular 5不起作用

共有2个答案

乌璞瑜
2023-03-14

通过这种方式,我在Project中实现了文件到web API的上传。

我也为谁担心。

const formData: FormData = new FormData();
formData.append('Image', image, image.name);
formData.append('ComponentId', componentId);
return this.http.post('/api/dashboard/UploadImage', formData);

一步一步地

ASP.NET Web API

[HttpPost]
[Route("api/dashboard/UploadImage")]
public HttpResponseMessage UploadImage() 
{
    string imageName = null;
    var httpRequest = HttpContext.Current.Request;
    //Upload Image
    var postedFile = httpRequest.Files["Image"];
    //Create custom filename
    if (postedFile != null)
    {
        imageName = new String(Path.GetFileNameWithoutExtension(postedFile.FileName).Take(10).ToArray()).Replace(" ", "-");
        imageName = imageName + DateTime.Now.ToString("yymmssfff") + Path.GetExtension(postedFile.FileName);
        var filePath = HttpContext.Current.Server.MapPath("~/Images/" + imageName);
        postedFile.SaveAs(filePath);
    }
}

HTML表单

<form #imageForm=ngForm (ngSubmit)="OnSubmit(Image)">

    <img [src]="imageUrl" class="imgArea">
    <div class="image-upload">
        <label for="file-input">
            <img src="upload.jpg" />
        </label>

        <input id="file-input" #Image type="file" (change)="handleFileInput($event.target.files)" />
        <button type="submit" class="btn-large btn-submit" [disabled]="Image.value=='' || !imageForm.valid"><i
                class="material-icons">save</i></button>
    </div>
</form>

要使用API的TS文件

OnSubmit(Image) {
    this.dashboardService.uploadImage(this.componentId, this.fileToUpload).subscribe(
      data => {
        console.log('done');
        Image.value = null;
        this.imageUrl = "/assets/img/logo.png";
      }
    );
  }

服务TS

uploadImage(componentId, image) {
        const formData: FormData = new FormData();
        formData.append('Image', image, image.name);
        formData.append('ComponentId', componentId);
        return this.http.post('/api/dashboard/UploadImage', formData);
    }
乜胜泫
2023-03-14

下面是一个将文件上载到API的工作示例:

步骤1:HTML模板(file-upload.component.HTML)

定义file类型的简单输入标记。为(change)-event添加一个函数,用于处理选择文件。

<div class="form-group">
    <label for="file">Choose File</label>
    <input type="file"
           id="file"
           (change)="handleFileInput($event.target.files)">
</div>

步骤2:TypeScript中的上载处理(file-upload.component.ts)

为所选文件定义默认变量。

fileToUpload: File = null;

创建在(change)中使用的函数-文件输入标记的事件:

handleFileInput(files: FileList) {
    this.fileToUpload = files.item(0);
}

如果您想要处理多文件选择,那么您可以遍历这个文件数组。

现在通过调用file-upload.service创建文件上传函数

uploadFileToActivity() {
    this.fileUploadService.postFile(this.fileToUpload).subscribe(data => {
      // do something, if upload success
      }, error => {
        console.log(error);
      });
  }

步骤3:文件上传服务(File-Upload.Service.ts)

通过POST-method上传文件,您应该使用formdata,因为这样您就可以将文件添加到http请求中。

postFile(fileToUpload: File): Observable<boolean> {
    const endpoint = 'your-destination-url';
    const formData: FormData = new FormData();
    formData.append('fileKey', fileToUpload, fileToUpload.name);
    return this.httpClient
      .post(endpoint, formData, { headers: yourHeadersConfig })
      .map(() => { return true; })
      .catch((e) => this.handleError(e));
}

这是一个很简单的例子,我每天都在工作中使用。

 类似资料:
  • 问题内容: 我遇到的情况是,我有一个表格,其中有一行,其中有两个文本字段条目,我必须上载该行的文件,并且这种行可以是“ N”,然后是可以在整个表单中输入的主文件,而这些文件是表单的一部分,我必须在单击保存按钮后立即提交所有这些文件。 我有点被ng-upload困扰,它需要一个api调用,而对于这种形式,我真的不能超过一个api调用。示例html代码如下: 问题答案: 这是文件值绑定指令示例.. h

  • 我需要上传文件使用角和Spring引导。 角度服务: 我的后端Rest服务如下: 所以不能理解为什么它不起作用! 谢谢

  • 我需要编写一个使用Spring Boot控制器和多部分文件的上传角度模块。但是当我上传文件时,我有一个错误 我尝试了很多更改,但每次都出现这个错误。这是我的angular file sender数据服务 这是我的控制器 它无法使用或不使用多部分解析器。你能帮我上传这个文件吗?

  • 问题内容: 我正在使用和Path上传单个文件。代码如下: 对于一个文件,这很好用。我需要测试多个文件上传。如何传递多个文件? 问题答案: Selenium仍然不支持多个文件上传: 但是,根据webdriver:upload多个文件,您应该能够 在Chrome中 通过使用换行符连接文件路径 来解决该问题: 另请参阅: 文件上传-在FireFox中上传多个文件

  • 我正在创建一个角度4应用程序,其功能之一是文件上传。我知道ng4在IE 9之前一直受支持,并且我已经使用FormData创建了一个工作文件上传组件,该组件不支持返回IE9。现在,创建跨浏览器解决方案以上传支持旧浏览器作为IE9的文件的常用方法是什么?

  • 在Yii里上传文件通常使用 yii\web\UploadedFile 类, 它把每个上传的文件封装成 UploadedFile 对象。 结合 yii\widgets\ActiveForm 和 models,你可以轻松实现安全的上传文件机制。 创建模型 和普通的文本输入框类似,当要上传一个文件时,你需要创建一个模型类并且用其中的某个属性来接收上传的文件实例。 你还需要声明一条验证规则以验证上传的文件