企业系列之JSSDK⽂件预览对接
企业系列之JSSDK⽂件预览对接
企业JS-SDK是企业⾯向⽹页开发者提供的基于企业内的⽹页开发⼯具包。
通过使⽤企业JS-SDK,⽹页开发者可借助企业⾼效地使⽤拍照、选图、语⾳、位置等⼿机系统的能⼒,同时可以直接使⽤企业分享、扫⼀扫等企业特有的能⼒,为企业⽤户提供更优质的⽹页体验。
通过使⽤企业JS-SDK,⽹页开发者可借助企业⾼效地使⽤拍照、选图、语⾳、位置等⼿机系统的能⼒,同时可以直接使⽤企业分享、扫⼀扫等企业特有的能⼒,为企业⽤户提供更优质的⽹页体验。
wx.previewFile({
url:'',// 需要预览⽂件的地址(必填,可以使⽤相对路径)
name:'',// 需要预览⽂件的⽂件名,必须有带⽂件格式的后缀,例如.doc(不填的话取url的最后部分,最后部分是个包含格式后缀的⽂件名)
size:1048576// 需要预览⽂件的字节⼤⼩(必填,⽽且⼤⼩必须正确,否则会打开失败)
});
官⽹给出的资料是⽐较少的,对接过程遇到的问题,通过博客记录下来,分享出来,仅供参考:
对接遇到问题:
url这个链接,要看项⽬,有些项⽬都是有专门的⽂件服务器,然后将url放上去就⾏,⽽对于我对接的系统,是将⽂件保存到服务器对应的磁盘路径,这种问题也困扰了我⼀会,然后想到将⽂件流output.write出来
/**
* <h2>wx.previewFile材料预览,提供url给前端调⽤</h2>
* @Author nicky
* @Date 2021/05/07 15:32
* @Param [filePath, response]
* @return void
*/
@ApiOperation(value ="1.jssdk材料http预览接⼝",position =1)
@GetMapping(value ={"/wxPreviewFile"})
@ApiImplicitParams({@ApiImplicitParam(name ="filePath", value ="附件相对路径,url编码⼀遍", required =true)})
public void wxPreviewFile(@RequestParam(value ="filePath", required =true)String filePath, HttpServletResponse response)throws Exception{ try{
if(StringUtils.isNotBlank(filePath)){
filePath =de(filePath ,"UTF-8");
}
if(log.isInfoEnabled()){
log.info("filePath:{}", ConfigConstant.FILEBASEPATH +filePath);
}
byte[] bytes = CommonFileUtil.loadFromFile( ConfigConstant.FILEBASEPATH + filePath);
OutputStream output = OutputStream();
response.setContentType(CommonFileUtil.loadContentType(CommonFileUtil.loadSuffix(filePath)));
output.write(bytes);
output.flush();
output.close();
}catch(Exception e){
// ignore exception
}
}
⽂件⼯具类代码:
static{
FILE_TYPES.put("xlsx","application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");//xlsx
FILE_TYPES.put("xls","application/vnd.ms-excel");//xls
FILE_TYPES.put("docx","application/vnd.openxmlformats-officedocument.wordprocessingml.document");//docx FILE_TYPES.put("doc","application/msword");//doc
FILE_TYPES.put("jpg","image/jpeg");//jpg
FILE_TYPES.put("png","image/png");//png
FILE_TYPES.put("gif","image/gif");//gif
FILE_TYPES.put("txt","text/plain");//txt
FILE_TYPES.put("pdf","application/pdf");//txt
}
public static String loadContentType(String fileType){
String temp = (fileType);
if(StringUtils.isEmpty(temp)){
return fileType;
}else{
return temp;
}
}
public static String loadSuffix(String name){
if(StringUtils.isEmpty(name)|| name.length()==0)
return"";
sdkreturn name.substring(name.lastIndexOf(".")+1);
}
public static byte[]loadFromFile(String localStorePath)throws IOException {
BufferedInputStream in =new BufferedInputStream(new FileInputStream(localStorePath));
ByteArrayOutputStream out =new ByteArrayOutputStream(1024);
byte[] temp =new byte[1024];
int size =0;
while((size = in.read(temp))!=-1){
out.write(temp,0, size);
}
in.close();
byte[] content = ByteArray();
return content;
}
name参数的⽂件名最好和url的⼀致,填错了是不能预览和下载的,所以需要注意
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论