2015-05-25 17:45:11 13724次浏览 3条回答 1 悬赏 10 金钱

我在做一个图片多图片上传的功能 图片能上传成功 ,也能在视图页面正常显示。但是在二次修改的时候,一提交就没了 原因是在二次修改的表单里 你如果不选择图片 fileInput 表单里是空的所以就把数据库里的图片路径更新成空的了,我现在想到的解决办法是 (在二次修改的时候把原来已经上传的图片的路径显示在 fileInput 表单里,这样就可以避免了)

最佳答案

  • 性感的农民 发布于 2015-05-25 18:20 举报

    fileinput是个例外,无论insert操作还是update,正常情况在表单中选择文件的地方是清空的,可能是w3c的定义。你也可以在接收POST数据之前保存文件路径的字段的值,接收post数据之后如果发现浏览器没有新文件upload,那么save之前还原你之前保存的值即可。

    你的方法也可以,有个负面影响就是用户体验会下降一些,和正常的文件上传表单感觉不一样。

    3 条回复
    回复于 2015-05-26 16:37 回复

    此方法亲测过~也是农民指点

    回复于 2015-05-26 17:18 回复

    用你的思路实现了 。

    回复于 2015-09-06 14:20 回复

    请问如何实现的?

    觉得很赞
  • 回答于 2015-05-25 17:51 举报

    骚年你确定你修改的model是findOne出来的而不是直接new出来的?
    如果你在上传成功后添加数据库,那么插入库的时候没有把图片地址插库?

    2 条回复
    回复于 2015-05-25 17:53 回复

    图片上传成功之后 图片路径插入到数据库了。

    回复于 2015-05-25 17:54 回复

    恩恩,那么你在update数据的时候,传入生成表单的model应该是findOne出来的AR对象,这个已经包含了上传路径的啊。

  • 回答于 2015-05-25 18:19 举报

    如果你的图片路径指的是本地路径的话,这样是行不通的,因为我记得OSX或者Linux系统是没办法获取这个路径的。

    我的解决方案:

    1.单独写上传接口,ajax上传
    2.上传成功候,传回图片地址(可以生成一个token,防止恶意修改),填充图片字段
    3.提交数据的时候,实际上是提交的上传成功候的地址(string)
    4.关于修改,加载原来的地址,如果需要修改,重新上传,覆盖原来的地址即可
    
    觉得很赞
您需要登录后才可以回答。登录 | 立即注册
长春子
见习主管

长春子

注册时间:2013-12-23
最后登录:2015-11-02
在线时长:10小时37分
  • 粉丝8
  • 金钱318
  • 威望0
  • 积分418

热门问题