diff --git a/jQuery-File-Upload.MVC3/App_Data/ClientDependency/JONB-2011A-27c15c61529ad4ad2383af323263cdad-map.xml b/jQuery-File-Upload.MVC3/App_Data/ClientDependency/JONB-2011A-27c15c61529ad4ad2383af323263cdad-map.xml
new file mode 100644
index 0000000..55e8ea9
--- /dev/null
+++ b/jQuery-File-Upload.MVC3/App_Data/ClientDependency/JONB-2011A-27c15c61529ad4ad2383af323263cdad-map.xml
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/jQuery-File-Upload.MVC3/Controllers/HomeController.cs b/jQuery-File-Upload.MVC3/Controllers/HomeController.cs
index de22cc4..41c8dcc 100644
--- a/jQuery-File-Upload.MVC3/Controllers/HomeController.cs
+++ b/jQuery-File-Upload.MVC3/Controllers/HomeController.cs
@@ -9,6 +9,11 @@ namespace jQuery_File_Upload.MVC3.Controllers
{
public class HomeController : Controller
{
+ private string StorageRoot
+ {
+ get { return Path.Combine(Server.MapPath("~/Files")); }
+ }
+
public ActionResult Index()
{
return View();
@@ -52,26 +57,22 @@ public ActionResult UploadFiles()
foreach (string file in Request.Files)
{
- var hpf = Request.Files[file] as HttpPostedFileBase;
- if (hpf.ContentLength == 0 || hpf.FileName == null)
- continue;
-
- var filename = Guid.NewGuid() + Path.GetFileName(hpf.FileName);
+ var statuses = new List();
+ var headers = Request.Headers;
- var filepath = Path.Combine(Server.MapPath("~/Files"), filename);
- hpf.SaveAs(filepath);
-
- r.Add(new ViewDataUploadFilesResult()
+ if (string.IsNullOrEmpty(headers["X-File-Name"]))
{
- name = hpf.FileName,
- size = hpf.ContentLength,
- type = hpf.ContentType,
- url = "/Home/Download/" + filename,
- delete_url = "/Home/Delete/" + filename,
- delete_type = "GET",
- thumbnail_url = @"data:image/png;base64," + EncodeFile(filepath)
+ UploadWholeFile(Request, statuses);
+ }
+ else
+ {
+ UploadPartialFile(headers["X-File-Name"], Request, statuses);
+ }
- });
+ JsonResult result = Json(statuses);
+ result.ContentType = "text/plain";
+
+ return result;
}
return Json(r);
@@ -81,6 +82,59 @@ private string EncodeFile(string fileName)
{
return Convert.ToBase64String(System.IO.File.ReadAllBytes(fileName));
}
+
+ //Credit to i-e-b and his ASP.Net uploader for the bulk of the upload helper methods - https://github.com/i-e-b/jQueryFileUpload.Net
+ private void UploadPartialFile(string fileName, HttpRequestBase request, List statuses)
+ {
+ if (request.Files.Count != 1) throw new HttpRequestValidationException("Attempt to upload chunked file containing more than one fragment per request");
+ var file = request.Files[0];
+ var inputStream = file.InputStream;
+ var fullName = Path.Combine(StorageRoot, Path.GetFileName(fileName));
+
+ using (var fs = new FileStream(fullName, FileMode.Append, FileAccess.Write))
+ {
+ var buffer = new byte[1024];
+
+ var l = inputStream.Read(buffer, 0, 1024);
+ while (l > 0)
+ {
+ fs.Write(buffer, 0, l);
+ l = inputStream.Read(buffer, 0, 1024);
+ }
+ fs.Flush();
+ fs.Close();
+ }
+ statuses.Add(new ViewDataUploadFilesResult()
+ {
+ name = fileName,
+ size = file.ContentLength,
+ type = file.ContentType,
+ url = "/Home/Download/" + fileName,
+ delete_url = "/Home/Delete/" + fileName,
+ delete_type = "GET",
+ });
+ }
+
+ //Credit to i-e-b and his ASP.Net uploader for the bulk of the upload helper methods - https://github.com/i-e-b/jQueryFileUpload.Net
+ private void UploadWholeFile(HttpRequestBase request, List statuses)
+ {
+ for (int i = 0; i < request.Files.Count; i++)
+ {
+ var file = request.Files[i];
+ file.SaveAs(Path.Combine(StorageRoot, Path.GetFileName(file.FileName)));
+
+ string fullName = Path.GetFileName(file.FileName);
+ statuses.Add(new ViewDataUploadFilesResult()
+ {
+ name = file.FileName,
+ size = file.ContentLength,
+ type = file.ContentType,
+ url = "/Home/Download/" + file.FileName,
+ delete_url = "/Home/Delete/" + file.FileName,
+ delete_type = "GET",
+ });
+ }
+ }
}
public class ViewDataUploadFilesResult
diff --git a/jQuery-File-Upload.MVC3/jQuery-File-Upload.MVC3.csproj b/jQuery-File-Upload.MVC3/jQuery-File-Upload.MVC3.csproj
index 20dd82d..5e6eddd 100644
--- a/jQuery-File-Upload.MVC3/jQuery-File-Upload.MVC3.csproj
+++ b/jQuery-File-Upload.MVC3/jQuery-File-Upload.MVC3.csproj
@@ -180,7 +180,7 @@
False
True
- 49319
+ 61396
/