public HttpResponseMessage DownloadFile(FileDTO req)
 {
     try
     {
         var    folderManager = FolderManager.Instance;
         var    fileManager   = FileManager.Instance;
         string RawImageUrl   = req.url;
         if (RawImageUrl.IndexOf('?') > 0)
         {
             RawImageUrl = RawImageUrl.Substring(0, RawImageUrl.IndexOf('?'));
         }
         RawImageUrl = RawImageUrl.Replace(PortalSettings.HomeDirectory, "");
         var    file         = fileManager.GetFile(ActiveModule.PortalID, RawImageUrl);
         string uploadfolder = "OpenContent/Files/" + ActiveModule.ModuleID;
         if (!string.IsNullOrEmpty(req.uploadfolder))
         {
             uploadfolder = req.uploadfolder;
         }
         var userFolder = folderManager.GetFolder(PortalSettings.PortalId, uploadfolder);
         if (userFolder == null)
         {
             userFolder = folderManager.AddFolder(PortalSettings.PortalId, uploadfolder);
         }
         string fileName = FileUploadController.CleanUpFileName(Path.GetFileName(req.url));
         if (file == null && (req.url.StartsWith("http://") || req.url.StartsWith("https://")))
         {
             int    suffix       = 0;
             string baseFileName = Path.GetFileNameWithoutExtension(req.url);
             string extension    = Path.GetExtension(req.url);
             var    fileInfo     = fileManager.GetFile(userFolder, fileName);
             while (fileInfo != null)
             {
                 suffix++;
                 fileName = baseFileName + "-" + suffix + extension;
                 fileInfo = fileManager.GetFile(userFolder, fileName);
             }
             using (WebClient myWebClient = new WebClient())
             {
                 try
                 {
                     var stream = new MemoryStream(myWebClient.DownloadData(req.url));
                     file = fileManager.AddFile(userFolder, fileName, stream, true);
                 }
                 catch (Exception ex)
                 {
                     return(Request.CreateResponse(HttpStatusCode.OK, new
                     {
                         url = "",
                         id = -1,
                         error = ex.Message
                     }));
                 }
             }
         }
         return(Request.CreateResponse(HttpStatusCode.OK, new
         {
             url = file.ToUrl(),
             id = file.FileId,
             error = ""
         }));
     }
     catch (Exception exc)
     {
         Logger.Error(exc);
         return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, exc));
     }
 }
        private void UploadWholeFile(HttpContextBase context, ICollection <FilesStatus> statuses)
        {
            IFileManager   _fileManager   = FileManager.Instance;
            IFolderManager _folderManager = FolderManager.Instance;

            for (var i = 0; i < context.Request.Files.Count; i++)
            {
                var file = context.Request.Files[i];
                if (file == null)
                {
                    continue;
                }

                var fileName = FileUploadController.CleanUpFileName(Path.GetFileName(file.FileName));


                if (IsAllowedExtension(fileName))
                {
                    string uploadfolder = "OpenContent/FormFiles/" + ActiveModule.ModuleID;

                    if (!string.IsNullOrEmpty(context.Request.Form["uploadfolder"]))
                    {
                        uploadfolder = context.Request.Form["uploadfolder"];
                    }
                    var userFolder = _folderManager.GetFolder(PortalSettings.PortalId, uploadfolder);
                    if (userFolder == null)
                    {
                        // Get folder mapping
                        var folderMapping = FolderMappingController.Instance.GetFolderMapping(PortalSettings.PortalId, "Secure");
                        userFolder = _folderManager.AddFolder(folderMapping, uploadfolder);
                        //userFolder = _folderManager.AddFolder(PortalSettings.PortalId, uploadfolder);
                    }
                    int    suffix       = 0;
                    string baseFileName = Path.GetFileNameWithoutExtension(fileName);
                    string extension    = Path.GetExtension(fileName);
                    var    fileInfo     = _fileManager.GetFile(userFolder, fileName);
                    while (fileInfo != null)
                    {
                        suffix++;
                        fileName = baseFileName + "-" + suffix + extension;
                        fileInfo = _fileManager.GetFile(userFolder, fileName);
                    }
                    fileInfo = _fileManager.AddFile(userFolder, fileName, file.InputStream, true);
                    var fileIcon = IconController.IconURL("Ext" + fileInfo.Extension, "32x32");
                    if (!File.Exists(context.Server.MapPath(fileIcon)))
                    {
                        fileIcon = IconController.IconURL("File", "32x32");
                    }

                    statuses.Add(new FilesStatus
                    {
                        success       = true,
                        name          = fileName,
                        extension     = fileInfo.Extension,
                        type          = fileInfo.ContentType,
                        size          = file.ContentLength,
                        progress      = "1.0",
                        url           = _fileManager.GetUrl(fileInfo),
                        thumbnail_url = fileIcon,
                        message       = "success",
                        id            = fileInfo.FileId,
                    });
                }
                else
                {
                    statuses.Add(new FilesStatus
                    {
                        success = false,
                        name    = fileName,
                        message = "File type not allowed."
                    });
                }
            }
        }