前端跟后台多次交互

ztmsimon 2016-07-19 03:50:13
我现在做一个文件上传的项目,使用的是asp.net MVC4 + uploadify。
现在我先判断上传的文件在服务器端的文件夹中是否存在,如果存在的话,就在前端页面中弹出对话框让别人进行选择是覆盖还是取消。别人进行了选择后,代码还要继续进行。
请问各位大神,我应该如何实现?
...全文
332 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
引用 12 楼 ztmsimon 的回复:
参考7楼我知道,但是我还有个问题是js没办法跟强类型视图一起用啊!
其实纠结所谓 Controller 是个荒唐的想法。你这是数据提交判断,又不是刷新页面,纠结 MVC 就是过分了。连asp.net mvc 都是阉割了 View 部分才来应对 web 页面数据服务请求。 其实对于轻量级的 web 服务接口来说,使用 ashx 才是你的根本,处理服务时(而不是刷新页面时)尽量不要扯上 MVC 概念。 最后,也许你们比较多地是考虑界面问题。如果是考虑数据问题,实际上文件资源在页面的显示方式(分类目录、文件名)是一方面,而文件本身的内容在服务器端应该按照其 MD5 值作为文件名(可以用前3个字母来分一下目录,省得一个目录下文件太多)。然后在你们的数据库中保存界面上显示文件俺名称与其真实的MD5值的属性就行了。 对于内容重复的文件,在服务器端不应该保存多份文件。
  • 打赏
  • 举报
回复
实际上,假设用户在客户端选择了文件,那么他需要的文件名,跟他选择的文件的文件名,应该是可以分开的。只不过是你的 javascript 程序可能在客户端可以默认地先设置好前者。 既然分开,那么你就可以在提交 Form 之前先异步地确认一下目标文件名是否可用。然后一旦提交文件,不管实际文件叫做什么名字,都用另外一个文件名来作为文件名。 这不是不考虑判断文件名那个,而是应该考虑得更加复杂一点、异步判断文件名,用户才感到容易使用。
  • 打赏
  • 举报
回复
判断“文件名”是不是太差劲了啊?你确定是仔细设计软件? 比如说我今天要传一个文件,叫做 xxx.docx,你怎么就知道别人没有同名文件呢?你又怎么知道我以前(10天以前)上传的文件不会都叫做 xxx.docx 呢?
insus 2016-07-26
  • 打赏
  • 举报
回复
其实不必计较文件名的重复性,使用数据表记录文件上传的信息。 新文件名,唯一性, 旧文件名... 存储在文件夹中,就是使用新文件名。
masanaka 2016-07-26
  • 打赏
  • 举报
回复
引用 5 楼 ztmsimon 的回复:
[quote=引用 3 楼 FoxDave 的回复:] 不用先回发判断是否存在不行吗? 给个选项,如果有同名文件是否overwrite
这个也不是说不行,你说的也是个办法,但是感觉给别人的体验不好。[/quote] 恰恰相反,版主的提议是体验度第二好的。 体验度最好的是,问都不问。根据实际需求,要么自动改名,要么,在设计上就根本不该有要覆盖的问题。
ztmsimon 2016-07-26
  • 打赏
  • 举报
回复
参考7楼我知道,但是我还有个问题是js没办法跟强类型视图一起用啊!
天空丶蒋 2016-07-25
  • 打赏
  • 举报
回复
引用 6 楼 ztmsimon 的回复:
[quote=引用 4 楼 az6161311 的回复:] 上传的文件在服务器端的文件夹中是否存在 ==》post 带文件名 请求后端 ==》后端返回验证 ==》 弹出提示 ==》确认 ==》uploadify提交 ==》OK。
您的意思是说先使用自带的form提交的方法,先进行判断,如果有重复的文件的话,客户端页面上显示两个按钮,然后再使用uploadify进行上传? 我之前是用uploadify上传,但是我用强类型视图,好像没办法将强类型跟文件一起传递到服务器,我就直接改用原生的input file了... 在不使用ajax的时候,用submit按钮的时候,强类型跟文件可以同时传递到服务器。[/quote] 可以参考#7 楼
ztmsimon 2016-07-22
  • 打赏
  • 举报
回复
好吧,我也是用的这个思路,因为我是用强类型视图,所以我没有用uploadify,而是用input file来做的。 用了三个按钮,一个提交的button,一个确认的submit,一个取消的button。 提交的button显示,确认的submit跟取消的button隐藏。 使用ajax去在服务器端先查找是否存在同名文件,如果不存在,在ajax中调用确认的submit, 如果存在的话,alert出一个消息,并在页面上将提交的button隐藏,将确认的submit跟取消的button显示。 因为是asp.net mvc,直接使用uploadify没办法跟强类型视图一起使用,蛋疼死了。
还想懒够 2016-07-21
  • 打赏
  • 举报
回复
引用 8 楼 liaoxing168 的回复:
分两步走: 1.通过ajax判断服务器是否存在同名文件 2.如果不存在,直接上传 3.否则询问用户是否覆盖同名文件?不覆盖则取消该次上传,否则上传文件并覆盖
是的,在调用uploadify上传之前先使用ajax去后台判断,根据判断返回的结果再由用户决定是否上传等。用户判断完毕后,就只需要传参数给uploadify就行了
  • 打赏
  • 举报
回复
  $.ajax({
                method: "POST",
                url: "@Url.Action("CheckFile", "Test")",
                dataType: "json",
                contentType: "application/json; charset=utf-8",
                data: JSON.stringify({ fileName: "abcd.png" }),
                success: function (data) {
                    if (data.ErrorCode == 2) {//有重名文件
                        

                        if (confirm("是否要覆盖?")) {
                            //执行覆盖操作
                        }
                        else {
                            //取消
                        }
                    }
                    else {//没有重名文件
                    }
                }
            });
ztmsimon 2016-07-20
  • 打赏
  • 举报
回复
引用 4 楼 az6161311 的回复:
上传的文件在服务器端的文件夹中是否存在 ==》post 带文件名 请求后端 ==》后端返回验证 ==》 弹出提示 ==》确认 ==》uploadify提交 ==》OK。
您的意思是说先使用自带的form提交的方法,先进行判断,如果有重复的文件的话,客户端页面上显示两个按钮,然后再使用uploadify进行上传? 我之前是用uploadify上传,但是我用强类型视图,好像没办法将强类型跟文件一起传递到服务器,我就直接改用原生的input file了... 在不使用ajax的时候,用submit按钮的时候,强类型跟文件可以同时传递到服务器。
ztmsimon 2016-07-20
  • 打赏
  • 举报
回复
引用 3 楼 FoxDave 的回复:
不用先回发判断是否存在不行吗? 给个选项,如果有同名文件是否overwrite
这个也不是说不行,你说的也是个办法,但是感觉给别人的体验不好。
天空丶蒋 2016-07-20
  • 打赏
  • 举报
回复
上传的文件在服务器端的文件夹中是否存在 ==》post 带文件名 请求后端 ==》后端返回验证 ==》 弹出提示 ==》确认 ==》uploadify提交 ==》OK。
Justin-Liu 2016-07-20
  • 打赏
  • 举报
回复
不用先回发判断是否存在不行吗? 给个选项,如果有同名文件是否overwrite
  • 打赏
  • 举报
回复
分两步走: 1.通过ajax判断服务器是否存在同名文件 2.如果不存在,直接上传 3.否则询问用户是否覆盖同名文件?不覆盖则取消该次上传,否则上传文件并覆盖
ztmsimon 2016-07-19
  • 打赏
  • 举报
回复
引用 1 楼 insus 的回复:
判断文件是否存在? 你这里只能判断文件名是否有相同而已吧!
是的 ,只能判断文件名是否相同。 如果文件名相同,我也给前端页面一个提示,然后根据别人的判断来继续运行代码。 能实现吗?
insus 2016-07-19
  • 打赏
  • 举报
回复
判断文件是否存在? 你这里只能判断文件名是否有相同而已吧!

62,073

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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