header("Content-Type": "image/jpeg") for



我有一个场景,我需要通过POST请求上传图像。当我使用Postman Client发送请求时,没有问题。我需要使用Swagger UI测试API调用,并且无法发送图像。

我尝试在Swagger.json文件中更改参数值以适应此功能,但是我所有的尝试都是徒劳的。

当前,我正在尝试更改swagger-ui.js文件。查看文件后,我找到了这个 -

request.types = {
  html: 'text/html',
  json: 'application/json',
  xml: 'application/xml',
  urlencoded: 'application/x-www-form-urlencoded',
  'form': 'application/x-www-form-urlencoded',
  'form-data': 'application/x-www-form-urlencoded'
};

除了以上6个给定的请求类型外,没有请求类型可以处理image/jpeg或任何其他文件类型。

我还找到了处理multipart/form-data的代码部分。

var isMultiPart = false;
if(headers['Content-Type'] && headers['ContentType'].indexOf('multipart/form-data') >= 0) {
    isMultiPart = true;
}
if (hasFormParams && !isMultiPart) {
    var encoded = '';
    for (key in formParams) {
      value = formParams[key];
      if (typeof value !== 'undefined') {
        if (encoded !== '') {
          encoded += '&';
        }
        encoded += encodeURIComponent(key) + '=' + encodeURIComponent(value);
      }
    }
    body = encoded;
  } else if (isMultiPart) {
    if (opts.useJQuery) {
      var bodyParam = new FormData();
      bodyParam.type = 'formData';
      for (key in formParams) {
        value = args[key];
        if (typeof value !== 'undefined') {
          // required for jquery file upload
          if (value.type === 'file' && value.value) {
            delete headers['Content-Type'];
            bodyParam.append(key, value.value);
          } else {
            bodyParam.append(key, value);
          }
        }
      }
      body = bodyParam;
    }
}

我还尝试添加isImageJpeg值以处理图像。由于我没有JavaScript的经验,因此我无法继续进行。有没有一种方法可以同样添加可以处理图像上传的条件?

当前的OpenAPI规格Swagger遵循除application/x-www-form-urlencoded和/或multipart/form-data外,禁止对HTTP有效载荷的任何描述(通过consumes参数(。

这样做的原因之一是,您不应该依靠客户为上传文件提供正确的MIME类型。

最新更新