public async Task<ActionResult> FileUploadProgress (string uuid) {
SimpleLongPolling longPolling = new SimpleLongPolling (uuid);
var msg = await longPolling.WaitAsync ();
- return Json (msg == null ? "-2" : msg);
+ return Json (msg);
}
- public ActionResult DownloadZip(string uuid){
- string path= Environment.CurrentDirectory+"/wwwroot/zipfiles/"+uuid+".zip";
- byte[] file= System.IO.File.ReadAllBytes(path);
- System.IO.File.Delete(path);
- return File(file, "application/zip");
+ public ActionResult DownloadZip (string uuid) {
+ string path = Environment.CurrentDirectory + "/wwwroot/zipfiles/" + uuid + ".zip";
+ byte[] file = System.IO.File.ReadAllBytes (path);
+ System.IO.File.Delete (path);
+ return File (file, "application/zip");
}
public ActionResult Error () {
}
public async Task<string> WaitAsync () {
- await Task.WhenAny (_TaskCompleteion.Task, Task.Delay (100)); // blocking wait until event occurs or timeout
+ await Task.WhenAny (_TaskCompleteion.Task, Task.Delay (1200000)); // blocking wait until event occurs or timeout
lock (_sSubscribers) {
_sSubscribers.Remove (this);
}
private JObject keypair;
private string[] dirList;
private List<IFormFile> files;
+ private int now;
private string zipname;
public ZipModel () { }
zip.AddEntry (dir + filename, file.OpenReadStream ());
}
- if (!Directory.Exists(Environment.CurrentDirectory+"/wwwroot/zipfiles/")){
- Directory.CreateDirectory(Environment.CurrentDirectory+"/wwwroot/zipfiles/");
+ if (!Directory.Exists (Environment.CurrentDirectory + "/wwwroot/zipfiles/")) {
+ Directory.CreateDirectory (Environment.CurrentDirectory + "/wwwroot/zipfiles/");
}
zip.Save (path);
public void SaveProgress (object sender, SaveProgressEventArgs e) {
if (e.EventType == ZipProgressEventType.Saving_BeforeWriteEntry) {
- SimpleLongPolling.Publish (uuid, (e.EntriesSaved + 1) + "");
+ if (now != e.EntriesSaved + 1) {
+ now = e.EntriesSaved + 1;
+ SimpleLongPolling.Publish (uuid, (e.EntriesSaved + 1) + "");
+ }
} else if (e.EventType == ZipProgressEventType.Saving_Completed) {
SimpleLongPolling.Publish (uuid, "-1");
}
<span>@LanguagePack.GetText(lang, "pleasewait") <div><progress value="0" max="1"></progress></div></span>\r
</div>\r
<div class="webzip-btn-complate">\r
- <div class="webzip-btn" onclick="RequestCompress();">\r
+ <div class="webzip-btn" onclick="$('.modal').css('display', 'table');RequestCompress();">\r
@LanguagePack.GetText(lang, "complate")\r
</div>\r
</div>\r
if (confirm(_Language["iscompress"] + size)) {
var filelength = files.keys().length;
$("progress").attr("max", filelength);
- $(".modal").css("display", "table");
//디렉토리 리스트
var dirList = new Array();
for (var i = 0; i < directories.keys().length; i++) {
//데이터 폼 생성후 파일들과 각종 정포 담기
var formdata = new FormData();
- var uuid= GetUUID();
+ var uuid = GetUUID();
for (var i = 0; i < files.keys().length; i++) {
formdata.append("files", files.get(i).get("file"));
}
formdata.append("format", format);
formdata.append("uuid", uuid);
- //압축요청, 압축이 완료되면 다운로드창 띄우기
+ //압축요청
$.ajax({
type: "post",
url: "/webzip/fileupload",
data: formdata,
processData: false,
- contentType: false,
+ contentType: false
});
- var progress = setInterval(() => {
- $.ajax({
- type: "post",
- url: "/webzip/fileuploadprogress",
- data: "uuid="+uuid
- }).done(function(data2) {
- var iscomplate = false;
- if (data2 == "-1" && iscomplate == false){
- clearInterval(progress);
+ var Getprogress = function() {
+ $.ajax({
+ type: "post",
+ url: "/webzip/fileuploadprogress",
+ data: "uuid=" + uuid,
+ timeout: 1200000,
+ success: function(data2) {
+ $("progress").attr("value", data2);
+ if (data2 != "-1") {
+ Getprogress();
+ } else {
+ //modal display none바꾸고
$(".modal").css("display", "none");
+ //파일다운로드 요청.
var a = document.createElement("a");
- var url = "/webzip/DownloadZip?uuid="+uuid;
+ var url = "/webzip/DownloadZip?uuid=" + uuid;
a.href = url;
a.download = directories.get(0) + "." + format;
a.click();
window.URL.revokeObjectURL(url);
- $("progress").attr("value", "0");
- iscomplate == true;
}
- else {
- if (data2 != "-2"){
- $("progress").attr("value", data2);
- }
- }
- });
- req;
- }, 100);
- progress;
+ }
+ });
+ };
+ Getprogress();
}
}
SetSortable();
directories.put(0, "example");
+//웹소켓(안씀)
// var protocol = location.protocol === "https:" ? "wss:" : "ws:";
// var wsUri = protocol + "//" + window.location.host + "/ws";
// var socket = new WebSocket(wsUri);
if (confirm(_Language["iscompress"] + size)) {
var filelength = files.keys().length;
$("progress").attr("max", filelength);
- $(".modal").css("display", "table");
//디렉토리 리스트
var dirList = new Array();
for (var i = 0; i < directories.keys().length; i++) {
//데이터 폼 생성후 파일들과 각종 정포 담기
var formdata = new FormData();
- var uuid= GetUUID();
+ var uuid = GetUUID();
for (var i = 0; i < files.keys().length; i++) {
formdata.append("files", files.get(i).get("file"));
}
formdata.append("format", format);
formdata.append("uuid", uuid);
- //압축요청, 압축이 완료되면 다운로드창 띄우기
+ //압축요청
$.ajax({
type: "post",
url: "/webzip/fileupload",
data: formdata,
processData: false,
- contentType: false,
+ contentType: false
});
- var progress = setInterval(() => {
- $.ajax({
- type: "post",
- url: "/webzip/fileuploadprogress",
- data: "uuid="+uuid
- }).done(function(data2) {
- var iscomplate = false;
- if (data2 == "-1" && iscomplate == false){
- clearInterval(progress);
+ var Getprogress = function() {
+ $.ajax({
+ type: "post",
+ url: "/webzip/fileuploadprogress",
+ data: "uuid=" + uuid,
+ timeout: 1200000,
+ success: function(data2) {
+ $("progress").attr("value", data2);
+ if (data2 != "-1") {
+ Getprogress();
+ } else {
+ //modal display none바꾸고
$(".modal").css("display", "none");
+ //파일다운로드 요청.
var a = document.createElement("a");
- var url = "/webzip/DownloadZip?uuid="+uuid;
+ var url = "/webzip/DownloadZip?uuid=" + uuid;
a.href = url;
a.download = directories.get(0) + "." + format;
a.click();
window.URL.revokeObjectURL(url);
- $("progress").attr("value", "0");
- iscomplate == true;
}
- else {
- if (data2 != "-2"){
- $("progress").attr("value", data2);
- }
- }
- });
- req;
- }, 100);
- progress;
+ }
+ });
+ };
+ Getprogress();
}
}
SetSortable();
directories.put(0, "example");
+//웹소켓(안씀)
// var protocol = location.protocol === "https:" ? "wss:" : "ws:";
// var wsUri = protocol + "//" + window.location.host + "/ws";
// var socket = new WebSocket(wsUri);