下載: https://github.com/danialfarid/ng-file-
<script type="text/javascript" src="你js放的位置"></script> 【BundleConfig.cs】
<body ng-app="fileUpload" ng-controller="MyCtrl">
@*<h4>待上傳附件</h4>*@
@*<div class="btn-section col-md-1 col-sm-4 col-xs-4">
<button ngf-select="uploadFiles($files, $invalidFiles)" multiple
accept=".pdf" ngf-max-height="1000" ngf-max-size="setFileSize()" class="btn btn-main col-xs-4" ng-disabled="cnaUpload()">
瀏覽檔案
</button>
</div>*@
@*<div class="btn-section col-md-1 col-sm-4 col-xs-4">
<button id="btnUpd_D1" class="btn btn-main col-xs-4" style="display:inline;" ng-click="doUpload2(this)" ng-disabled="cnaUpload()">上傳</button>
</div>
<br><br>*@
<b>
附件清單:
<div style="color:red;">(檔案大小限制為{{FILESIZE}}MB)</div>
</b>
<div ngf-drop ngf-select ng-model="files" class="drop-box" ng-show="files==[] || files.length==0"
ngf-drag-over-class="'dragover'" ngf-multiple="true" ngf-allow-dir="true"
accept="application/pdf"
ngf-pattern="'application/pdf'">拖放檔案至此
</div>
<ul>
<li ng-repeat="f in files" style="font:smaller;">
<div style="display:inline-block;">
<button style="background:rgba(0,0,0,0);border:unset;" ng-click="remove(this)" ng-show="f"><i class="glyphicon glyphicon-remove"></i></button>
{{f.name}} {{f.$errorParam}}
<span class="progress" ng-show="f.progress >= 0">
<div style="width:{{f.progress}}%"
ng-bind="f.progress + '%'"></div>
</span>
</div>
</li>
<li ng-repeat="f in errFiles" style="font:smaller;color:red;">
<div style="display:inline-block;">
<button style="background:rgba(0,0,0,0);border:unset;" ng-click="f=null" ng-show="f"><i class="glyphicon glyphicon-remove"></i></button>
{{f.name}} {{f.$error}} {{f.$errorParam}}
</div>
</li>
</ul>
{{errorMsg}}
</body>
//-----------------------------------自定義事件與函式-----------------------------------
//【事件】--檔案上傳後 uploading2 ----------------------------------------
$scope.$on("uploading2", function (e, a_arg) {
a_arg.files = $scope.files;
a_arg.A_YEAR = $scope.searchData.ACD_YEAR;
a_arg.A_AUNIT = $scope.searchData.ACD_AUNIT;
a_arg.A_DEPT = $scope.searchData.ACD_DEPT;
a_arg.A_FORMKIND = $scope.searchData.ACD_FORMKIND;
a_arg.A_FORMNO = $scope.searchData.ACD_FORMNO;
});
//【事件】--檔案上傳後 uploaded2 ----------------------------------------
$scope.$on("uploaded2", function (e, a_arg) {
$scope.files = "";
});
//【函式】控制上傳按鈕----------------------------------------
$scope.cnaUpload = function () {
if ($scope.CANUPLOAD == "0") {
return false;
} else {
return true;
}
}
//【函式】控制檔案大小----------------------------------------
$scope.setFileSize = function () {
if (!$scope || !$scope.FILESIZE) {
return $scope.FILESIZE + "MB";
} else {
return $scope.FILESIZE + "MB";
}
}
//【函式】多檔上傳UI----------------------------------------
$scope.uploadFiles = function (files, errFiles) {
$scope.files = files;
$scope.errFiles = errFiles;
angular.forEach(files, function (file) {
//file.upload = Upload.upload({
// //url: 'https://angular-file-upload-cors-srv.appspot.com/upload',
// data: { file: file }
//});
//file.upload.then(function (response) {
// $timeout(function () {
// file.result = response.data;
// });
//}, function (response) {
// if (response.status > 0)
// $scope.errorMsg = response.status + ': ' + response.data;
//}, function (evt) {
// file.progress = Math.min(100, parseInt(100.0 *
// evt.loaded / evt.total));
//});
});
}
//【函式】檔案上傳----------------------------------------
$scope.doUpload2 = function ($scope) {
//執行確定前事件 uploading ---------------
var l_arg = new Object();
l_arg.message = '';
l_arg.cancel = false;
l_arg.files = [];
$scope.$broadcast('uploading2', l_arg);
if (l_arg.cancel) {
if (l_arg.message)
swal(l_arg.message, '', 'warning').catch(swal.noop);
return;
}
if (l_arg.files.length == 0) {
/*請選擇檔案以供上傳!*/
swal(ksijsLocalized.angular.doUploadMsg, '', 'warning').catch(swal.noop);
return;
}
var l_fd = new FormData();
l_fd.append('A_YEAR', l_arg.A_YEAR);
l_fd.append('A_AUNIT', l_arg.A_AUNIT);
l_fd.append('A_DEPT', l_arg.A_DEPT);
l_fd.append('A_FORMKIND', l_arg.A_FORMKIND);
l_fd.append('A_FORMNO', l_arg.A_FORMNO);
angular.forEach(l_arg.files, function (a_fileName) {
l_fd.append('file', a_fileName);
});
//
$scope.loading = true;
$http.post('/api/FileUpDownload/UpLoadFile', l_fd,
{
transformRequest: angular.identity,
headers: { 'Content-Type': undefined }
})
.success(
function (a_data) {
$scope.loading = false;
//取得執行批次處理結果 uploaded---------------
var l_arg = new Object();
l_arg.files = a_data;
l_arg.isShowMessage = true;
l_arg.message = '';
$scope.$broadcast('uploaded2', l_arg);
$scope.onBtnSearchClick();
if (l_arg.message == '')
/*上傳作業完成!*/
l_arg.message = ksijsLocalized.angular.doUploadOKMsg;
if (l_arg.isShowMessage)
swal(l_arg.message, '', 'success').catch(swal.noop);
})
.error(
function (a_err) {
$scope.loading = false;
/*上傳作業失敗!*/
$scope.error = ksijsLocalized.angular.doUploadErrorMsg + '\n' + a_err.data.ExceptionMessage;
if (typeof a_err.data.ExceptionMessage != 'undefined') {
if ($scope.isShowErrorMessage) swal($scope.error, '', 'error').catch(swal.noop);
}
}
);
};
//上傳前移除檔案
$scope.remove = function (e) {
$scope.bufferFiles = new Array();
for (var i = 0; i < $scope.files.length; i++) {
if (e.f.name != $scope.files[i].name) {
$scope.bufferFiles.push($scope.files[i]);
}
}
if ($scope.bufferFiles.length > 0) {
$scope.files = $scope.bufferFiles;
}
else {
$scope.files = [];
}
};
//【函式】刪除附件----------------------------------------
$scope.dataCreate = function (a_arg) {
var l_delta = newDeltaQuOther();
l_delta.name = "UPDATE_FILE_DETAIL"; // 指定那一個查詢
// 查詢參數值
l_delta.oldRow.A_YEAR = a_arg.oldRow["ACD_YEAR"]
l_delta.oldRow.A_AUNIT = a_arg.oldRow["ACD_AUNIT"]
l_delta.oldRow.A_DEPT = a_arg.oldRow["ACD_DEPT"]
l_delta.oldRow.A_FORMKIND = a_arg.oldRow["ACD_FORMKIND"]
l_delta.oldRow.A_FORMNO = a_arg.oldRow["ACD_FORMNO"]
l_delta.oldRow.A_ATTACHMENT = a_arg.oldRow["ACD_ATTACHMENT"];
$scope.doQuOther(l_delta).then(function (a_result) {
swal("執行成功!", "", "success");
},
function (FailureMessage) {
swal("執行失敗!", "", "error");
})
};
//【函式】預覽或下載附件----------------------------------------
$scope.PdfView = function (Type) {
if (Type == "1") {
$scope.PDF_Viewer = "1";
}
}
//【函式】預覽----------------------------------------
$scope.doPrint = function ($scope, printType, $event) {
}
//【cellTemplate】自訂檔案刪除按鈕----------------------------------------
function getCellTemplate_RemoveRowBatch() {
return "<button class='btn btn-link cellBtn' type='button' ng-click='doRemoveRowBatch($event)' tabindex=\"-1\"><i class='glyphicon glyphicon-remove'></i></button>";
}
//【cellTemplate】自訂檔案下載按鈕----------------------------------------
function getCellTemplate_GetRow() {
return "<button class='btn btn-link cellBtn' type='button' ng-click='doGetRow($event)' tabindex=\"-1\"><i class='glyphicon glyphicon-download-alt'></i></button>";
}
//【cellTemplate】自訂檔案預覽按鈕----------------------------------------
function getCellTemplate_GetRowView_PDF() {
return "<button class='btn btn-link cellBtn' type='button' ng-click='doPrint($event,\"PREVIEW\",$event);PdfView(\"1\");doGetRow($event);' tabindex=\"-1\"><i class='glyphicon glyphicon-eye-open'></i></button>";
}
⚠️排版時注意明細的div也要放上bootstrap,否則可能被空白div擋住輸入框⚠️ng-model不可跟ng-checked同時使用,會有例外情形發生(官網證實)
Apr 30, 2023下載: https://github.com/angular-ui-tree/angular-ui-tree
May 6, 2021要加入子視窗之檔案 前端html <my-qubtn></my-qubtn> //添加按鈕 js //sender 是 cshtml button 的 id 名稱 //url 是要開窗的網址路徑 //isAutoSearch 是否要開窗就查詢 $scope.quModals.push({ sender: 'btnNAME_S', url: '/DEMO/QTest', isMultiSelect: false, isAutoSearch: false });
Apr 1, 2021前端html 設定ng-options <select name="txtID_S" class="form-control" ng-model="searchData.ID" ng-options="m.DESC as m.DESC for m in opData.ID|filter:{GROUP:searchData.ID}""> <option value=""></option> </select> 後端(放在Init()在初始頁面即執行)
Mar 22, 2021or
By clicking below, you agree to our terms of service.
New to HackMD? Sign up