为了账号安全,请及时绑定邮箱和手机立即绑定

问一个感觉就是搞笑的需求

问一个感觉就是搞笑的需求

跃然一笑 2018-12-12 14:15:02
情景:后台相关的只有一个上传文件的接口(对方不会再给你写其它接口了!!!),前端上传什么文件它就把这个文件存到服务器。前端通过 ajax 发送一个 get 请求把服务器上的一个 data.json文件下载,然后根据这个 json 文件渲染出相关的 dom,如果用户进行了相关操作的话,修改这个data.json文件,然后再把这个 data.json文件通过上传文件的接口存回服务器,以供下次请求下载。我现在面临的问题:ajax 发送的 get 请求把data.json 下载下来时我现在只知道把这个 json 转成字符串或者Object,不知道怎么以文件的形式保存下来还要读取、操作最后再上传。浏览器上传文件应该是只有通过 input:file 标签让用户选中文件后再上传吧。但现在这个需求是明显不可能让用户选择文件再上传的,而这又不符合浏览器的安全策略了(文件不通过用户的选择,而是直接用 js 选中上传)。对方给的两个思路是(感觉等于没说):js 生成系统临时文件,加载文件路径到浏览文件的 input,提交文件。ajax发送 post 请求时直接附上生成的文件内容在这里求各位大佬给点思路,如果不行的话就给点强力的理由反驳对方。在这里先谢谢各位大佬提醒的 Blod,要不都不知道还有这么一个接口,以后有时间的话还是要把MDN的api都过一遍的好,不至于一点思路都没有。随便把实现贴一下,其实了解的话也挺简单的。相关文档: Blob File
查看完整描述

1 回答

?
森林海

TA贡献2011条经验 获得超2个赞

其实没有你想象的那么复杂

  1. get到data.json之后,并不用将其内容保存到本地文件,浏览器内js也是做不到这样的事情的,只要保存在ls这样的本地存储内,或是在当前页面内进行修改后上传

  2. 利用formdata+blob对象方式将修改过后的json先转化为blob对象,并指定MIME为json文件。不过这里也是可以使用File对象进行构造,都可以试一下。也不是很清楚你的项目的具体情况。

  3. 然后formdata进行ajax上传。Blob对象基本上约等于file对象,其为二进制格式数据,但是不同的后端代码上可能会有对应的不同接受写法。


查看完整回答
反对 回复 2019-01-27
  • 1 回答
  • 0 关注
  • 408 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信