Mã sau đây để tải lên kết cấu đang hoạt động ở angularjs 1.2.26 nhưng ngừng hoạt động khi tôi nâng cấp ứng dụng web lên 1.3.0.'Mã thông báo không mong muốn' trong việc tải lên AJAX của nhiều dữ liệu/biểu mẫu trong angular.js 1.3.0
Mã HTML
<input file-model="file" name="file" type="file">
fileModel Chỉ
app.directive('fileModel', [ '$parse', function($parse) {
return {
restrict : 'A',
link : function(scope, element, attrs) {
var model = $parse(attrs.fileModel);
var modelSetter = model.assign;
element.bind('change', function() {
scope.$apply(function() {
modelSetter(scope, element[0].files[0]);
});
});
scope.$on("reset", function() {
element.val(null);
});
}
};
} ]);
Tải lên Chức năng - Trong 1.2.26 chọn "multipart/form-data" như Content-Type sẽ không hoạt động. Nhưng với "không xác định" là góc nội dung loại sẽ làm một số loại ma thuật mà có thể làm cho nó hoạt động.
var upload = function(textureUploadUrl) {
var formData = new FormData();
formData.append('name', $scope.name);
formData.append('file', $scope.file);
$http.post(textureUploadUrl, formData, {
transformRequest : angular.identity,
headers : {
'Content-Type' : undefined
}
}).success(function(uploadedTexture) {
console.log(uploadedTexture);
// further processing of uploadedTexture
});
}
LỖI:
SyntaxError: Unexpected token h
at Object.parse (native)
at fromJson (https://ajax.googleapis.com/ajax/libs/angularjs/1.3.0/angular.js:1104:14)
at defaultHttpResponseTransform (https://ajax.googleapis.com/ajax/libs/angularjs/1.3.0/angular.js:8572:18)
at https://ajax.googleapis.com/ajax/libs/angularjs/1.3.0/angular.js:8517:12
at forEach (https://ajax.googleapis.com/ajax/libs/angularjs/1.3.0/angular.js:335:20)
at transformData (https://ajax.googleapis.com/ajax/libs/angularjs/1.3.0/angular.js:8516:3)
at transformResponse (https://ajax.googleapis.com/ajax/libs/angularjs/1.3.0/angular.js:9224:23)
at processQueue (https://ajax.googleapis.com/ajax/libs/angularjs/1.3.0/angular.js:12914:27)
at https://ajax.googleapis.com/ajax/libs/angularjs/1.3.0/angular.js:12930:27
at Scope.$eval (https://ajax.googleapis.com/ajax/libs/angularjs/1.3.0/angular.js:14123:28)
Có ai biết làm thế nào để làm việc này trong phiên bản mới?
CẬP NHẬT
tôi đã thu hẹp xuống vấn đề một chút. Nó không hoạt động với 1.3.0-rc.5, nhưng với phiên bản trước (rc.4) nó hoạt động. Vì vậy, tôi hiện đang cố gắng tìm ra những thay đổi nào dẫn đến vấn đề của tôi. Đây là changelog.
+1. Tôi đã excatly kịch bản (tập tin tải lên trở về url) nhưng với áo thay vì mùa xuân MVC. Các giải pháp tương tự hoạt động, tôi chú thích tài nguyên của tôi với tương đương với áo: '@Produces (TEXT_PLAIN)'. Bạn đã cứu tôi rất nhiều thời gian. – gontard
Rất vui khi biết điều đó! Lúc đầu, tôi nghĩ rằng nó đã làm với việc tải lên chính nó, nhưng nó bật ra nó là một vấn đề với phản ứng. – Jonas
Lưu ý rằng sự cố xuất hiện khi tôi nâng cấp từ góc 1,2 đến 1,3. – gontard