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

情景:

  1. 后台相关的只有一个上传文件的接口(对方不会再给你写其它接口了!!!),前端上传什么文件它就把这个文件存到服务器。

  2. 前端通过 ajax 发送一个 get 请求把服务器上的一个 data.json文件下载,然后根据这个 json 文件渲染出相关的 dom,如果用户进行了相关操作的话,修改这个data.json文件,然后再把这个 data.json
    文件通过上传文件的接口存回服务器,以供下次请求下载。

我现在面临的问题:

  1. ajax 发送的 get 请求把data.json 下载下来时我现在只知道把这个 json 转成字符串或者Object,不知道怎么以文件的形式保存下来还要读取、操作最后再上传。

  2. 浏览器上传文件应该是只有通过 input:file 标签让用户选中文件后再上传吧。但现在这个需求是明显不可能让用户选择文件再上传的,而这又不符合浏览器的安全策略了(文件不通过用户的选择,而是直接用 js 选中上传)。

对方给的两个思路是(感觉等于没说):

  1. js 生成系统临时文件,加载文件路径到浏览文件的 input,提交文件。

  2. ajax发送 post 请求时直接附上生成的文件内容

在这里求各位大佬给点思路,如果不行的话就给点强力的理由反驳对方。



在这里先谢谢各位大佬提醒的 Blod,要不都不知道还有这么一个接口,以后有时间的话还是要把MDN的api都过一遍的好,不至于一点思路都没有。

随便把实现贴一下,其实了解的话也挺简单的。

https://img4.mukewang.com/5c4d538600015b6007860274.jpg

相关文档: Blob File

跃然一笑
浏览 409回答 1
1回答

森林海

其实没有你想象的那么复杂get到data.json之后,并不用将其内容保存到本地文件,浏览器内js也是做不到这样的事情的,只要保存在ls这样的本地存储内,或是在当前页面内进行修改后上传利用formdata+blob对象方式将修改过后的json先转化为blob对象,并指定MIME为json文件。不过这里也是可以使用File对象进行构造,都可以试一下。也不是很清楚你的项目的具体情况。然后formdata进行ajax上传。Blob对象基本上约等于file对象,其为二进制格式数据,但是不同的后端代码上可能会有对应的不同接受写法。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript