Tôi đã thử điều này trong nhiều ngày. Giả sử tôi có một dạng như sau:Cách tải lên tệp bằng AngularJ như cách truyền thống
<form ng-submit="create()" class="form-horizontal" enctype="multipart/form-data">
<div class="control-group">
<label class="control-label">name : </label>
<div class="controls">
<input type="text" class="input-xlarge" ng-model="message.title" />
</div>
</div>
<div class="control-group">
<label class="control-label">avatar : </label>
<div class="controls">
<input type="file" ng-model="message.avatar" name="message[avatar]" />
</div>
</div>
<div class="well">
<input class="btn btn-large btn-primary" type="submit" value="建立資料" />
</div>
</form>
Tôi đang sử dụng đá quý carrierwave để xử lý tải tệp lên phía sau hiện trường. Bộ điều khiển của tôi giống như sau:
$scope.create = function($scope.message){
var deferred = $q.defer();
$http({
method: 'POST',
url: '/resources/messages',
data: $.param({message: message}),
headers: {'Content-Type': 'multipart/form-data'}
}).
success(function(data, status, headers, config){
deferred.resolve(data);
}).
error(function(data, status, headers, config){
deferred.reject(status);
});
return deferred.promise;
};
Tuy nhiên nó không hoạt động. Điều tôi định làm là tạo biểu mẫu và tải lên mọi thứ như cách cũ, nhưng các ví dụ tôi đã tìm thấy chẳng hạn như ng-upload hoặc giống như this post hoặc jquery file upload, chúng không phù hợp với nhu cầu của tôi. Có bất kỳ ví dụ hoặc mã mẫu nào cho mục đích này không? Cảm ơn bạn.
Dưới đây là một fiddle xử lý tải lên một số tập tin trong góc sử dụng xhr nếu đây không phải là những gì bạn đang tìm kiếm, bạn có thể cung cấp thêm chi tiết về những gì bạn muốn kể từ những gì bạn đã tìm thấy không phải là nó: http: //jsfiddle.net/danielzen/utp7j/ – shaunhusain