How Do i check at controller side whether my file is completly received or not so i can proceed further..
because at client side i know on load event the file is completly received but at server side how do i know...
my code is...
@{
Layout = null;
}
<!DOCTYPE html>
<html>
<head>
<title>HTML5NewThumb</title>
<style>
#file-list {
list-style: none;
margin-bottom: 3em;
}
#file-list li {
border-bottom: 1px solid #000;
margin-bottom: 0.5em;
padding-bottom: 0.5em;
}
#file-list li.no-items {
border-bottom: none;
}
#file-list div {
margin-bottom: 0.5em;
}
#file-list li img {
max-width: 200px;
}
#file-list .progress-bar-container {
width: 400px;
height: 10px;
border: 1px solid #555;
margin-bottom: 20px;
}
#file-list .progress-bar-container.uploaded {
height: auto;
border: none;
}
#file-list .progress-bar {
width: 0;
height: 10px;
font-weight: bold;
background: #6787e3;
}
#file-list .progress-bar-container.uploaded .progress-bar{
display: inline-block;
width: auto;
color: #6db508;
background: transparent;
}
#prog1
{
width: 0;
height: 10px;
font-weight: bold;
background: #6787e3;
}
</style>
</head>
<body>
<div role="main">
<section id="main-content">
<progress id="progBar" value="100" max="100"></progress>
<form id="form1" enctype="multipart/form-data" method="post" action="@Url.Action("Upload")" >
<input id="fileToUpload1" name="fileToUpload1" type="file" multiple="multiple"/>
<div style="width:500px;">
<div id="prog1"></div>
<progress id="progressBar" value="0" max="100"> </progress>
<span id="prognumber"></span>
</div>
<ul id="file-list">
<li class="no-items">(no files uploaded yet)</li>
</ul>
</form>
<script type="text/javascript">
var filesUpload = document.getElementById("fileToUpload1"),
fileList = document.getElementById("file-list");
prog12 = document.getElementById("prog1");
prognumber = document.getElementById("prognumber");
function uploadFile(file) {
var li = document.createElement("li"),
div = document.createElement("div"),
img,
reader,
xhr,
fileInfo;
li.appendChild(div);
if (typeof FileReader !== "undefined" && (/image/i).test(file.type)) {
img = document.createElement("img");
li.appendChild(img);
reader = new FileReader();
reader.onload = (function (theImg) {
return function (evt) {
theImg.src = evt.target.result;
};
} (img));
reader.readAsDataURL(file);
}
xhr = new XMLHttpRequest();
xhr.upload.addEventListener("progress", uploadProgress, false);
function uploadProgress(evt) {
if (evt.lengthComputable) {
var percentComplete = Math.round(evt.loaded * 100 / evt.total);
prognumber.innerHTML = percentComplete + '%';
prog12.style.width = (evt.loaded / evt.total) * 100 + "%";
var progressBar = document.getElementById("progressBar");
progressBar.max = evt.total;
progressBar.value = evt.loaded;
}
}
xhr.upload.addEventListener("load", loadSuccess, false);
function loadSuccess(evt) {
prognumber.innerHTML += "Upload";
var inputf = document.createElement("input");
inputf.setAttribute("type", "file");
inputf.setAttribute("multiple", "true");
fileList.appendChild(inputf);
}
xhr.open("POST", "@Url.Action("Upload","Home")", true);
xhr.setRequestHeader("Cache-Control", "no-cache");
xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
xhr.setRequestHeader("Content-Type", "multipart/form-data");
xhr.setRequestHeader("X-File-Name", file.fileName);
xhr.setRequestHeader("X-File-Size", file.fileSize);
xhr.setRequestHeader("X-File-Type", file.type);
xhr.send(file);
fileInfo = "<div>Name: " + file.name + "</div>";
fileInfo += "<div>Size: " + parseInt(file.size / 1024, 10) + " kb</div>";
fileInfo += "<div>Type: " + file.type + "</div>";
div.innerHTML = fileInfo;
fileList.appendChild(li);
}
function traverseFiles(files) {
if (typeof files !== "undefined") {
for (var i = 0, l = files.length; i < l; i++) {
uploadFile(files[i]);
}
}
else {
fileList.innerHTML = "No support for the File API in this web browser";
}
}
filesUpload.addEventListener("change", function () {
traverseFiles(this.files);
}, false);
</script>
</section>
</div>
</body>
</html>
And my controller side code is...because it allow to recevied next file
[HttpPost]
public ActionResult Upload(object fileToUpload1)
{
return Json(false, JsonRequestBehavior.AllowGet);
}