【问题标题】:Lumen + Angular Upload IssueLumen + Angular 上传问题
【发布时间】:2020-04-07 23:56:49
【问题描述】:

我正在尝试创建图像上传,但是当我尝试通过 Angular 应用程序上传文件时遇到问题,它不会上传,但是当我尝试通过 Postman 上传图像时,它会上传文件。

我相信它与 Content-Type 有关系,因为当我试图找出问题并在 Postman 中禁用 Content-Type 时,我不再收到相同的错误,并且它工作正常。

这是来自我的 Angular 应用程序的请求标头,它在上传图像时不起作用。

{状态:“错误”,错误:“找不到文件”}

当我在标头中禁用 Content-Type 时,它​​会上传罚款,但如果我要启用它,我会收到与上述相同的错误。

public upload(file: File)
    {
        var data = new FormData();
        data.append('file', file);

        let url = ':api:/assets';

        let observable = Observable.create(
            (observer) => {
                this
                    .baseApiService
                    .getHttpClient()
                    .post(
                        url,
                        data,
                        {
                            observe: 'response',
                        }
                    )
                    .subscribe(
                        (response) => {
                            let data  = response.body;
                            let asset = AssetModel.fromData(data);
                            observer.next(asset);
                            observer.complete();
                        },
                        (error) => {
                            observer.error(error);
                            observer.complete();
                        }
                    );
            }
        );

        return observable;
    }

【问题讨论】:

  • 您能否发布在 Angular 中上传文件的源代码?
  • @AshutoshKS 我已经添加了代码
  • 我已在答案中添加了更改。可以试试吗?
  • 我看到 Postman 只有 1 个标头,但来自 Angular 的请求有很多标头。我猜其中一个是导致问题的原因:您是否对它们都进行了测试?另外,也许您可​​以切换到其他客户端或使用浏览器的默认值?

标签: javascript angular api lumen


【解决方案1】:

根据您的测试,如果是标头问题,那么您可以在请求中编辑标头。我希望你使用的是 Angular 的 HttpClient。如果是,请修改您的代码,如下所示:

/* I'm trying to unset the header since we can't directly remove it */

.post(
    url,
    data,
    {
        observe: 'response',
        headers: new HttpHeaders({
            'Content-Type': '' /* OR set to 'image/jpeg' or 'image/png' */
        })
    }
)

阅读更多关于 HttpClient 的标头:https://angular.io/guide/http#http-headers

【讨论】:

  • 我刚刚尝试过,但同样的事情仍在发生
  • @Rickstar 您是否在网络工具中检查过此请求?那里的 Content-Type 是什么?
  • Content-Type 没有出现在请求标头中
  • 我在有效载荷中得到以下内容
  • -----WebKitFormBoundaryRjNA2tsij5eqrBjA Content-Disposition: form-data;名称=“文件”; filename="P1050938.jpg" Content-Type: image/jpeg ------WebKitFormBoundaryRjNA2tsij5eqrBjA--
猜你喜欢
  • 2020-07-21
  • 2016-06-10
  • 2020-02-22
  • 1970-01-01
  • 2019-12-12
  • 2022-12-18
  • 2020-04-19
  • 1970-01-01
  • 2018-06-11
相关资源
最近更新 更多