嗨,我正在開發angularjs應用程序。我正在做文件上傳模塊。我正在嘗試驗證這些文件。我只想上傳xlsx或xls文件。我已經開發了指令和工廠方法來上傳文件,如下所示。Angularjs如何獲取文件擴展名?
myapp.directive('fileModel', ['fileUploadExcel', function (fileUploadExcel) {
return {
restrict: 'A',
link: function (scope, element, attrs) {
element.bind("change", function (evt) {
fileUploadExcel.pendingFiles[attrs.fileModel] = evt.target.files[0];
});
}
};
}]);
下面是我的控制器。
$scope.upload = function (filename) {
fileUploadExcel.doUpload().success(function (success) {
}).error(function (error) {
});
下面是我的工廠代碼。
myapp.factory('fileUploadExcel', ['$http', '$cookieStore', 'cfg', function ($http, $cookieStore, cfg) {
var LoginID = $cookieStore.get("LoginID");
var baseurl = cfg.Baseurl;
var fileuploadurl = baseurl + 'api/Customer/BulkUploadVehicle/';
var service = {
uploadUrl: fileuploadurl,
pendingFiles: {},
doUpload: doUpload
};
return service;
function doUpload() {
var filename;
var files = new FormData();
files.append('LoginID', LoginID);
angular.forEach(this.pendingFiles, function (value, index) {
filename = value.name;
files.append(index, value);
});
var extn = filename.split(".").pop();
if (extn == 'xlsx' || extn == 'xls') {
return $http.post(this.uploadUrl, files, {
transformRequest: angular.identity,
headers: {
'Content-Type': undefined
}
})
}
else
{
return false;
}
}
}]);
我能夠成功獲得extn。當我的文件是類型的Excel我的代碼工作正常。每當我上傳除Excel以外的錯誤。我寫了return false。這在這裏不起作用。我應該回到別的可能。我可否知道在其他情況下我應該寫些什麼?有人可以幫我從這裏出去嗎?任何幫助,將不勝感激。謝謝。
當您嘗試上傳除xlsx或xls擴展名以外的文件時究竟發生了什麼?它是否通過if條件? –
謝謝拉胡爾。每當我上傳除Excel以外,我得到錯誤fileUploadExcel.doUpload(...)。成功不是一個功能 –
ahh..got it ..檢查答案? –