asp.net-mvc-4 – 用于上传mime文件和表单数据的MultipartFormDa
发布时间:2020-12-16 09:37:40 所属栏目:asp.Net 来源:网络整理
导读:由于Azure要求,使用RTM版本,Framework 4 代码在Azure模拟器上运行时出错 – 我怀疑问题与路径/环境变量有关. Azure Web角色失败,出现404错误 这是控制器代码: [ValidateInput(false)] public HttpResponseMessage Post() { try { if (!Request.Content.IsMi
由于Azure要求,使用RTM版本,Framework 4
代码在Azure模拟器上运行时出错 – 我怀疑问题与路径/环境变量有关. Azure Web角色失败,出现404错误 这是控制器代码: [ValidateInput(false)] public HttpResponseMessage Post() { try { if (!Request.Content.IsMimeMultipartContent("form-data")) { throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType); } string tempPath = RoleEnvironment.GetLocalResource("tempStorage").RootPath; Environment.SetEnvironmentVariable("TEMP",tempPath); Environment.SetEnvironmentVariable("TMP",tempPath); string Host = "test"; string StorageConnection = "credentials here"; string Product = "Product"; string CompanyID = "Company"; DocStorage docStorage = new DocStorage(Host,Product,CompanyID,StorageConnection); var multipartStreamProvider = new AzureBlobStorageMultipartProvider(docStorage.BlobContainer,tempPath); Stream reqStream = Request.Content.ReadAsStreamAsync().Result; if (reqStream.CanSeek) { reqStream.Position = 0; } Request.Content.ReadAsMultipartAsync<AzureBlobStorageMultipartProvider>(multipartStreamProvider).ContinueWith<List<FileDetails>>(t => { if (t.IsFaulted) { throw t.Exception; } AzureBlobStorageMultipartProvider provider = t.Result; foreach (var fileData in provider.FileData) { string fileName = Path.GetFileName(fileData.Headers.ContentDisposition.FileName.Trim('"')); string fileNameBlob = Path.GetFileName(fileData.LocalFileName.Trim('"')); CloudBlob blob = docStorage.BlobContainer.GetBlobReference(fileNameBlob); if (!string.IsNullOrEmpty(provider.FormData["company"])) blob.Metadata[AriettDocStorage.FileNameFileLocation] = provider.FormData["company"]; blob.SetMetadata(); } return provider.Files; }); return new HttpResponseMessage(HttpStatusCode.OK); } catch { return new HttpResponseMessage(HttpStatusCode.NotFound); } } 这是覆盖 public class AzureBlobStorageMultipartProvider : MultipartFormDataStreamProvider { public CloudBlobContainer Container; public AzureBlobStorageMultipartProvider(CloudBlobContainer container,string tempPath) : base(tempPath) { Container = container; } public override Task ExecutePostProcessingAsync() { // Upload the files to azure blob storage and remove them from local disk foreach (var fileData in this.FileData) { string fileName = Path.GetFileName(fileData.Headers.ContentDisposition.FileName.Trim('"')); // Retrieve reference to a blob string fileNameBlob = Path.GetFileName(fileData.LocalFileName.Trim('"')); CloudBlob blob = Container.GetBlobReference(fileNameBlob); blob.Properties.ContentType = fileData.Headers.ContentType.MediaType; blob.UploadFile(fileData.LocalFileName); blob.SetProperties(); File.Delete(fileData.LocalFileName); Files.Add(new FileDetails { ContentType = blob.Properties.ContentType,Name = blob.Name,Size = blob.Properties.Length,Location = blob.Uri.AbsoluteUri }); } return base.ExecutePostProcessingAsync(); } 解决方法
我解决了这个问题,这是一些小事,与路径无关,这是正确完成的.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-mvc-3 – Webgrid MVC 3条件行样式
- asp.net-mvc-3 – 使用存储过程(MSSQL)时Dapper的缓存解决方
- asp.net – GridView上的滚动条
- 如何在ASP.Net Web API中为特定控制器启用Windows身份验证
- asp.net-mvc-3 – EF 4.1 Code First多个多对多关系
- Singleton vs Cache ASP.NET
- asp.net-mvc-2 – 使用视图将MVC 2升级到MVC 3问题
- asp.net – 如何在文本框的点击事件上附加日历(全局)?
- asp.net – 如何使用kentico CMS获取GoogleNewsSitemap中的
- asp.net – ImageButton不会在IE10上发回帖子
推荐文章
站长推荐
- asp.net – 带有nginx或apache的Mono 2.11
- IdentityServer4 QuickStart 授权与自定义Claims
- asp.net-mvc-3 – 如何实现MVC3模型URL验证?
- asp.net-mvc-4 – Asp.Net MVC 4 bundle不提供se
- asp.net-mvc-4 – 加入前包含不起作用实体框架6
- asp.net-mvc-3 – 在MVC 3上启用黄屏死机
- 树莓派(一)系统安装
- asp.net-mvc – 为什么使用sendgrid发送的电子邮
- 实体框架 – 在Db初始化程序的种子方法中创建Asp
- asp.net-mvc – 我只是不了解TDD单元测试(Asp.Ne
热点阅读