【问题标题】:ng-flow file upload in web api在 web api 中上传 ng-flow 文件
【发布时间】:2015-03-16 06:39:57
【问题描述】:

我见过很多例子,ng-flow 都有 php 端服务器来上传文件。但由于我不是 php 方面的专家,我需要一些 webapi 方面的帮助,有人可以帮我找到一个工作示例或 ng-flow 的 webapi 文件上传教程。

谢谢大家。

【问题讨论】:

    标签: angularjs file-upload ng-flow


    【解决方案1】:

    下面是我执行此操作的 web-api 代码

    [HttpPost]
            public async Task<HttpResponseMessage> SaveFile()
            {
                if (!Request.Content.IsMimeMultipartContent())
                    Request.CreateResponse(HttpStatusCode.UnsupportedMediaType);
    
                var provider = FileSaver.GetMultipartProvider();
    
                var result = await Request.Content.ReadAsMultipartAsync(provider);
                var fileInfo = FileSaver.MoveToTemp(result);
                return Request.CreateResponse(HttpStatusCode.OK, fileInfo);
            }
    

    它使用自定义的FileSaver

    public class FileSaver
    {
        public static MultipartFormDataStreamProvider GetMultipartProvider()
        {
            var uploadFolder = //your upload path;
            return new MultipartFormDataStreamProvider(uploadFolder);
        }
    
        private static string GetDeserializedFileName(MultipartFileData fileData)
        {
            var fileName = GetFileName(fileData);
            return JsonConvert.DeserializeObject(fileName).ToString();
        }
    
        private static string GetFileName(MultipartFileData fileData)
        {
            return fileData.Headers.ContentDisposition.FileName;
        }
    
        public static FileInfo MoveToTemp(MultipartFormDataStreamProvider result)
        {
            var originalFileName = GetDeserializedFileName(result.FileData.First());
            var uploadedFileInfo = new FileInfo(result.FileData.First().LocalFileName);
            string timestamp = DateTime.UtcNow.ToString("yyyyMMddHHmmssfff", CultureInfo.InvariantCulture);
            var folder = Directory.CreateDirectory(**); //your upload path
            if (!folder.Exists) folder.Create();
            var filename = folder.FullName + @"\" + originalFileName;
            MoveFile(uploadedFileInfo, filename);
            return uploadedFileInfo;
        }
    
        private static void MoveFile(FileInfo fileInfo, string filename)
        {
            var count = 0;
            do
            {
                try
                {
                    fileInfo.MoveTo(filename);
                    return;
                }
                catch (Exception)
                {
                    if (count == 4)
                    {
                        throw;
                    }
                    count++;
                    Thread.Sleep(1 * 1000);
                }
            } while (true);
        }
    }
    

    【讨论】:

    • 我无法访问 ColloSysParam。你能告诉我那到底是什么吗?我们如何在 ng-flow 的配置中配置 SaveFile() 方法?
    • 用您的上传路径替换它...相应地编辑了代码..您需要使用 ng-flow 发布文件内容...根据您的问题,您在服务器端有问题.. .
    猜你喜欢
    • 1970-01-01
    • 2014-08-19
    • 1970-01-01
    • 2015-06-24
    • 1970-01-01
    • 1970-01-01
    • 2019-01-08
    • 2020-07-10
    • 1970-01-01
    相关资源
    最近更新 更多