asp.net同一个页面上传文件后接着删除文件遇到正由另一进程使用,因此该进程无法访问此文件的错误无法正确执行程序

u010077823 2017-07-21 05:01:18
HttpFileCollection upFiles = context.Request.Files;
//获取客户端上传的文件集合
//判断是否存在文件
if (upFiles.Count > 0)
{
//获取文件集合中的第一个文件(每次只上传一个文件)
HttpPostedFile Banner1 = upFiles[0];
//定义文件存放的目标路径
string targetDir = System.Web.HttpContext.Current.Server.MapPath("../company/images/tv/");

if (model.Tv != "")
{
try
{
File.Delete(targetDir + model.Tv
);
}
catch (Exception)
{
throw;
}
}
int tt = Banner1.FileName.LastIndexOf(".");
string filetype = Banner1.FileName.Substring(tt);
if (filetype.ToLower() != ".mp4" && filetype.ToLower() != ".3gp" && filetype.ToLower() != ".flv")
{
context.Response.Write("{\"type\":\"文件格式不正确\"}");
}
else
{
//创建目标路径
CreateDirectory(targetDir);
//组合成文件的完整路径
DateTime dt = System.DateTime.Now;
string endDate = dt.ToString("yyyyMMddhhmmss");
string Banner1path = System.IO.Path.Combine(targetDir, endDate + System.IO.Path.GetFileName(Banner1.FileName));
//保存上传的文件到指定路径中
Banner1.SaveAs(Banner1path);
//插入到数据库中
model.Tv = endDate + Banner1.FileName;
if (model != null)
{
if (bll.UpdateW_CustomerInfo(model) > 0)
{

context.Response.Write("{\"type\":\"上传成功\",\"url\":\"../images/tv/" + endDate + Banner1.FileName + "\"}");
}
}
else
{
model.Uid = Convert.ToInt32(context.Session["id"]);
if (bll.AddW_CustomerInfo(model) > 0)
{

context.Response.Write("{\"type\":\"上传成功\",\"url\":\"../images/tv/" + endDate + Banner1.FileName + "\"}");
}
}
}
}

大家好,最近做了一个上传视频的一般处理程序,和前端前后台分离实现视频上传功能,接口中每次保存文件前都判断删除曾经上传的旧文件,而当我快速连续上传两次文件的时候在File.Delete位置报了一个“正由另一进程使用,因此该进程无法访问此文件的错误无法正确执行程序”的错误,而在上传后等一段时间再上传则不会出现错误。我认为可能是由于HttpPostedFile.SaveAs未完成上传完文件的问题,但是查了很多帖子资料没有找到解决方法。请问大家有解决的办法吗?
...全文
174 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
吉普赛的歌 2017-07-21
  • 打赏
  • 举报
回复
try{ } catch(Execption ex){ //如果有异常则改名保存 }
吉普赛的歌 2017-07-21
  • 打赏
  • 举报
回复
如果有同名文件, 则改名保存就是了。

110,545

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧