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>
向各位大神求助,怎么样能正常上传图片?急,很急啊,项目都已经延期一天了……谢谢!
https://github.com/nervgh/ang... どういたしまして
リーリー リーリー リーリー被験者は 2 つの質問をしました: 1. ヘッダー設定はなぜ行われたのですか? 2. 写真のアップロード方法
1. ヘッダー設定をベースレベルの httpProvider に追加した理由は何ですか?
http://stackoverflow.com/ques...この投稿がどのように開始されたかについては、対象者の説明があまり明確ではありません。しかし、問題は、送信されたファイルのコンテンツ タイプが正しく設定されていないことにあります。 FormData を使用して送信する方法を提供します:
リーリー
js コードの一部は、データを
x-www-form-urlencoded
フォームにエンコードすることです。しかし、HTML にはデータ バインディングがありません。これは絶対に不可能です。したがって、angularjs の使用法をまったく理解していないのではないかと思います。また、データをどのように投稿したかを明確に説明していませんでした。問題がどこにあるのか誰にも分かりません。
完全なコードを投稿してから戻ってください