JS请求api接受其返回文件
1.html代码
<input type="file" id="cv">
<button onclick="cv()">提交</button>
<span id="pil" ></span>
1.选择文件 2.点击调用下面的js代码 3.用于产生文件的下载链接
2.js代码
//js代码
var data = document.getElementById("cv").files[0];//获得html的input文件
var formData = new FormData();
formData.append("file", data);//将文件添加到表单,索引名根据api的要求
$.ajax({
url:'http://49.234.109.53:808/photo',
dataType:'json',
type:'POST',
async: false,
data: formData,
reponseType:'arraybuffer',//可忽略
processData : false, // 使数据不做处理
contentType : false, // 不要设置Content-Type请求头
success: function(res){
},
error:function(res){
}
});
a=data.name;
document.getElementById("pil").innerHTML="<a href=\"http://49.234.109.53:1000/cv/"+a+"\">获取水印图</a>";//创建下载链接
1.这里其实是将原api处理的文件结果在后端又做了一个新的下载链接api来返回
2.ajax不具备接受文件流的能力,哪怕api返回成功,ajax依旧会进入error。
3.如果你只是api的使用者而非开发者,使用我另一篇博文 link.的python前端请求代码可以实现文件api的请求,然后将其作为一个新的接口,可以确定下载链接。
3.flask的获取文件代码
ajax使formdata格式但这里用files方法
request.files.get('file')