angular.js - angular post的Content-Type被设置,导致不能上传图片,求助!!
漂亮男人
漂亮男人 2017-05-15 17:10:24
0
3
753

angular项目中由于某些原因设置了以下代码:

    // $locationProvider.html5Mode(true);

    $httpProvider.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=utf-8';

    /**
     * The workhorse; converts an object to x-www-form-urlencoded serialization.
     * @param {Object} obj
     * @return {String}
     */
    var param = function (obj) {
      var query = '', name, value, fullSubName, subName, subValue, innerObj, i;

      for (name in obj) {
        value = obj[name];

        if (value instanceof Array) {
          for (i = 0; i < value.length; ++i) {
            subValue = value[i];
            fullSubName = name + '[' + i + ']';
            innerObj = {};
            innerObj[fullSubName] = subValue;
            query += param(innerObj) + '&';
          }
        }
        else if (value instanceof Object) {
          for (subName in value) {
            subValue = value[subName];
            fullSubName = name + '[' + subName + ']';
            innerObj = {};
            innerObj[fullSubName] = subValue;
            query += param(innerObj) + '&';
          }
        }
        else if (value !== undefined && value !== null)
          query += encodeURIComponent(name) + '=' + encodeURIComponent(value) + '&';
      }

      return query.length ? query.substr(0, query.length - 1) : query;
    };

    // Override $http service's default transformRequest
    $httpProvider.defaults.transformRequest = [function (data) {
      return angular.isObject(data) && String(data) !== '[object File]' ? param(data) : data;
    }];

结果导致现在文件不能上传,最简单的一个form表单提交都不行:

  <form action="upload/url" name="form1" method="post" enctype="multipart/form-data">
    <input id="file" name="file" type="file" accept="image/*">
    <button type="submit" class="btn btn-primary btn-lg">提交</button>
  </form>

向各位大神求助,怎么样能正常上传图片?急,很急啊,项目都已经延期一天了……谢谢!

漂亮男人
漂亮男人

모든 응답(3)
漂亮男人

https://github.com/nervgh/ang... 받아가세요, 천만에요

으아아아 으아아아 으아아아

淡淡烟草味

피험자는 두 가지 질문을 했습니다: 1. 헤더 설정은 왜 했나요? 2. 사진 업로드 방법

1. 헤더 설정을 기본 수준인 httpProvider

에 추가한 이유는 무엇인가요?

http://stackoverflow.com/ques...

회사 프로그래머라면 이 질문을 참고하세요. 귀사의 백엔드 API 상호 작용은 Content-Type: x-www-form-urlencoded를 사용하고, 각도는 Content-type: application/json을 사용하므로 Content-type 및 직렬화가 변경되었습니다. 주제는 그것을 참조할 수 있습니다.

2. 사진 업로드
이 제출이 어떻게 시작되었는지에 대한 주제 설명이 명확하지 않습니다. 그런데 문제는 제출된 파일의 내용 유형이 잘못 설정되었기 때문입니다. FormData를 사용하여 제출하는 방법을 제공하세요:

으아아아
给我你的怀抱

JS 코드는 데이터를 x-www-form-urlencoded 형식으로 인코딩하는 것입니다. 그러나 HTML에는 데이터 바인딩이 없으므로 이는 확실히 불가능합니다! 그래서 나는 당신이 anglejs의 사용법을 전혀 이해하지 못했다고 생각합니다.
또한 데이터를 어떻게 게시했는지 명확하게 설명하지 않았습니다. 문제가 어디에 있는지 누가 알겠습니까?

완전한 코드를 게시한 후 다시 오세요

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!