示例#1
0
        public HttpResponseMessage Post()
        {
            var nvc = HttpUtility.ParseQueryString(Request.RequestUri.Query);
            int blocksCount;

            int.TryParse(nvc["blocksCount"], out blocksCount);
            var  fileName = nvc["fileName"];
            long fileSize;

            long.TryParse(nvc["fileSize"], out fileSize);
            var userId           = nvc["userId"];
            var fileId           = Guid.NewGuid().ToString();
            var newFileName      = fileId + ".dat";
            var connectionString = RoleEnvironment.GetConfigurationSettingValue(Constants.ConfigurationSectionKey);
            var storageAccount   = CloudStorageAccount.Parse(connectionString);

            var fileToUpload = new FileUpload(userId, fileId)
            {
                UserIP              = ClientIP.GetClientIp(Request),
                BlockCount          = blocksCount,
                FileName            = fileName,
                NewFileName         = newFileName,
                FileSize            = fileSize,
                StartTime           = DateTime.Now,
                IsUploadCompleted   = false,
                UploadStatusMessage = "Starting Upload"
            };

            var tableClient = storageAccount.CreateCloudTableClient();
            var table       = tableClient.GetTableReference("FileUpload");

            table.CreateIfNotExists();
            var insertOperation = TableOperation.Insert(fileToUpload);

            table.Execute(insertOperation);

            var resp = Request.CreateResponse(HttpStatusCode.OK);

            var metaDataOutput = new MetaDataOutput {
                Success = true, FileId = fileToUpload.FileId
            };

            resp.Content = new ObjectContent(typeof(MetaDataOutput), metaDataOutput, new JsonMediaTypeFormatter());
            resp.Headers.Add("Access-Control-Allow-Methods", "OPTIONS, POST");
            resp.Headers.Add("Access-Control-Allow-Origin", "*");
            resp.Headers.Add("Access-Control-Allow-Headers", "x-requested-with");
            return(resp);
        }
示例#2
0
        public HttpResponseMessage Post()
        {
            var nvc = HttpUtility.ParseQueryString(Request.RequestUri.Query);

            var  fileName = nvc["fileName"];
            long fileSize;

            long.TryParse(nvc["fileSize"], out fileSize);
            var userIP   = nvc["userIP"];
            var fileId   = Guid.NewGuid().ToString();
            var fileType = nvc["fileType"];
            var fileURI  = nvc["fileURI"];
            var userKey  = nvc["userKey"];

            var queueItem = new EVSAppController.Models.UploadQueue();

            //fix to trim IPv4 addresses
            if (userIP.Contains(":"))
            {
                userIP = userIP.Split(':')[0];
            }

            queueItem.ContentSize      = fileSize;
            queueItem.ContentType      = fileType;
            queueItem.FileID           = fileId;
            queueItem.FileLocation     = fileURI;
            queueItem.OriginalFileName = fileName;
            queueItem.UploadedDate     = DateTime.Now;
            queueItem.UserIP           = userIP;
            queueItem.UserKey          = userKey;
            queueItem.Processing       = false;

            EVSAppController.Controllers.UploadQueueController.AddItemToQueue(queueItem);


            var resp = Request.CreateResponse(HttpStatusCode.OK);

            var metaDataOutput = new MetaDataOutput {
                Success = true, FileId = fileId
            };

            resp.Content = new ObjectContent(typeof(MetaDataOutput), metaDataOutput, new JsonMediaTypeFormatter());
            resp.Headers.Add("Access-Control-Allow-Methods", "OPTIONS, POST");
            resp.Headers.Add("Access-Control-Allow-Origin", "*");
            resp.Headers.Add("Access-Control-Allow-Headers", "x-requested-with");
            return(resp);
        }