如何在C#中的FileUpload中覆盖#

时间:2017-07-24 01:54:01

标签: c# asp.net api

在下面的代码中

  public class UploadController : ApiController
    {
        [HttpPost]
        public HttpResponseMessage Post()
        {
            HttpResponseMessage result = null;
          var httpRequest = HttpContext.Current.Request;
           if (httpRequest.Files.Count > 0)
            {
                var docfiles = new List<string>();
                 foreach (string file in httpRequest.Files)
                {
                    var postedFile = httpRequest.Files[file];
                    var filePath = HttpContext.Current.Server.MapPath("~/Files/" + postedFile.FileName);
                    postedFile.SaveAs(filePath);

                    var fileName = postedFile.FileName;
                    var extension = Path.GetExtension(fileName);
                    var nameWithoutExtension = Path.GetFileNameWithoutExtension(fileName);

                    var i = 1;
                    while (File.Exists(filePath + fileName))
                    {
                        fileName = nameWithoutExtension.Trim() + " (" + i + ")" + extension;
                        i++;
                    }
                    docfiles.Add(filePath + fileName);
                   // docfiles.Add(filePath);
                }
                result = Request.CreateResponse(HttpStatusCode.Created, docfiles);
            }
            else
            {
                result = Request.CreateResponse(HttpStatusCode.BadRequest);
            }
             return result;
        }

    }

我真的想让文件上传经典文件名(1).jpg如果文件名已经存在但我仍然删除了具有相同名称的旧文件,我不知道我在哪里错了我在循环中使用但它没有工作

1 个答案:

答案 0 :(得分:0)

我尝试修复它,下面的代码现在正在工作,结果我构造错了:)

  var filePath = HttpContext.Current.Server.MapPath("~/Files/" );
                         var postedFile = httpRequest.Files[file];

                        var fileName = postedFile.FileName;
                        var extension = Path.GetExtension(fileName);
                        var nameWithoutExtension = Path.GetFileNameWithoutExtension(fileName);

                        var i = 1;
                        while (File.Exists(filePath + fileName))
                        {
                            fileName = nameWithoutExtension.Trim() + " (" + i + ")" + extension;
                            i++;
                        }
                        postedFile.SaveAs(filePath + fileName);