Esempio n. 1
0
        public async Task <HttpResponseMessage> PostFormData(string language, string location)
        {
            MessageViewModel m = new MessageViewModel();

            // Check if the request contains multipart/form-data.
            if (!Request.Content.IsMimeMultipartContent())
            {
                throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType);
            }

            //JB. Forms the URL for the corresponding directory (i.e. English -> english)
            string root     = HttpContext.Current.Server.MapPath("~/Content/Messages/" + language);
            var    provider = new MultipartFormDataStreamProvider(root);

            try
            {
                // Read the form data.
                await Request.Content.ReadAsMultipartAsync(provider);

                List <string> files = new List <string>();

                // This illustrates how to get the file names.
                foreach (MultipartFileData file in provider.FileData)
                {
                    var originalFileName = file.Headers.ContentDisposition.FileName.Trim(new char[] { '\"' });

                    Trace.WriteLine(file.Headers.ContentDisposition.FileName);
                    Trace.WriteLine("Server file path: " + file.LocalFileName + ".mp3");

                    files.Add(Path.GetFileName(file.LocalFileName));

                    //var medate = DateTime.Now.ToString().Replace("/", "_").Replace(" ", "_").Replace(":", "_");
                    File.Move(file.LocalFileName, root + "/" + originalFileName);
                    m.FileName        = originalFileName;
                    m.FileUrl         = ConfigurationManager.AppSettings["MessageUrlRoot"] + originalFileName;
                    m.DateAdded       = DateTime.Now.ToLongDateString();
                    m.Location        = location;
                    m.FileSizeInBytes = file.Headers.ContentDisposition.Size.GetValueOrDefault();

                    //_voiceMessage.AddToAzure(root+"/"+originalFileName);
                }
                _voiceMessage.SaveMessage(_createMessage.CreateMessageRecord(m));

                return(Request.CreateResponse(HttpStatusCode.OK));
            }
            catch (System.Exception e)
            {
                return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, e));
            }
        }