public AttachmentResult Attachment(AttachmentInputModel model) { SetJobIdCookie(job.Guid); // Move to service/manager var dir = Server.MapPath(string.Format(PathToUploadsFormat, job.Guid, model.QQUUID)); var filePath = Path.Combine(dir, model.Filename); try { model.SaveAs(filePath); job.Attachments.Add(new Attachment() { Name = model.Filename, PathToFile = string.Format(RelativePathToUploadFormat, job.Guid, model.QQUUID, model.Filename), Type = new FileInfo(filePath).Extension }); jobService.SaveJob(job); } catch (Exception ex) { return new AttachmentResult(false, error: ex.Message); } // the anonymous object in the result below will be convert to json and set back to the browser return new AttachmentResult(true, new { extraInformation = job.Guid }); }
public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext) { var request = controllerContext.RequestContext.HttpContext.Request; var formUpload = request.Files.Count > 0; // find filename var xFileName = request.Headers["X-File-Name"]; var qqFile = request["qqfile"]; var qqUuid = request["qquuid"]; var formFilename = formUpload ? request.Files[0].FileName : null; var upload = new AttachmentInputModel { Filename = xFileName ?? qqFile ?? formFilename, InputStream = formUpload ? request.Files[0].InputStream : request.InputStream, QQUUID = Guid.Parse(qqUuid) }; return upload; }