下载网络图片并传入项目中
@ResponseBody
@RequestMapping(value = "/insertQualitycontrolInfo", produces = "application/json;charset=UTF-8")
public String insertQualitycontrolInfo() {
QualitycontrolInfo qualitycontrolInfo = this.getParameterBean("qualitycontrolInfo", new QualitycontrolInfo());
QualitycontrolInfo qualitycontrolInfoa = qualitycontrolService.insertEntityInfo(qualitycontrolInfo);
String qualitycontrolid = qualitycontrolInfoa.getQualitycontrolid();
Map<String,String> params = new HashMap<String,String>();
params.put("businessobjectid", qualitycontrolid);
params.put("businesscode", "LIMS_QUALITYCONTROL");
params.put("handletype", "1");
params.put("otherparam", "");
params.put("version", ""); //附件所需要的参数
String photourls = qualitycontrolInfo.getDesc13();
String fileDirServerSideByWorkDir = FileController.getWorkdir(); //传入项目中的地址
final String fileDirServerSide = fileDirServerSideByWorkDir;
String workPath = FileManager.getRealPath(StringUtils.isNotEmpty(fileDirServerSide) ? fileDirServerSide : workdir); //获取项目中存储的全部路径
if(photourls!=null){
Map<String,String> fileMap = qualitycontrolService.downloadPicture(photourls,workPath); //下载图片并返回相关图片信息
UploadFileInfo uploadFile = new UploadFileInfo();
BeanUtils.convertMap(params, uploadFile);
uploadFile.setFiledirserverside(fileDirServerSide);
uploadFile.setFilename(fileMap.get("filename"));
uploadFile.setFiletype(fileMap.get("contentType"));
uploadFile.setFilesize(fileMap.get("filesize"));
uploadFile.setMd5code(fileMap.get("md5code"));
uploadFile.setFilenameserverside(fileMap.get("filenameserverside"));
uploadFile.setRecordercode(getCurrentUser().getUsercode());
uploadFile.setRecorderdesc(getCurrentUser().getUserdesc());
uploadFile.setRecordtime(new Date());
uploadService.insertUploadFile(uploadFile);
}
return toJSON("qualitycontrolInfo", qualitycontrolInfoa);
}
public Map<String,String> downloadPicture(String urlList,String path) {
URL url = null;
Map<String,String> filemap = new HashMap<String,String>();
try {
url = new URL(urlList);
String uuid = UUID.randomUUID().toString();
String urlpri = "weixintousu"+uuid;
DataInputStream dataInputStream = new DataInputStream(url.openStream()); //创建数据输入流
String suffixname = urlList.substring(urlList.lastIndexOf("."));
String newpath = path.replaceAll("\\\\","/"); //将目录转为路径
String filepath = newpath+uuid+".jpg";
File file = new File(filepath);
FileOutputStream fileOutputStream = new FileOutputStream(file); //创建文件输出流,都是先用File类打开本地文件,实例化输入输出流,然后调用流的读写方法读取或写入数据,最后关闭流
ByteArrayOutputStream output = new ByteArrayOutputStream(); //创建字节输出流,字节数组输出流在内存中创建一个字节数组缓冲区,所有发送到输出流的数据保存在该字节数组缓冲区中
byte[] buffer = new byte[1024]; //定义了一个byte类型的数组,数组长度为1024。也就是说你最多可以存1024个字节的东西
int length;
while ((length = dataInputStream.read(buffer)) > 0) {
output.write(buffer, 0, length); //表示读了多少个字节就写多少个字节。最多字节数和buffer长度一样
}
fileOutputStream.write(output.toByteArray()); //文件输出流写output的字符数组
String contentType = new MimetypesFileTypeMap().getContentType(file); //获取file文件的contentType
FileBean fbean = new FileBean();
fbean.setOriginalname(urlpri);
fbean.setFilename(filepath);
fbean.setContenttype(contentType);
fbean.setUuid(uuid+".jpg");
File tfile = fbean.getFile();
String md5code = MD5Util.getFileMD5String(tfile); //获取文件的MD5
filemap.put("filename", urlpri);
filemap.put("md5code", md5code);
filemap.put("contentType", contentType);
filemap.put("filesize", output.size()+"");
filemap.put("filenameserverside", uuid+".jpg"); //将插入附件表中所需的信息放入map中并返回
dataInputStream.close();
fileOutputStream.close();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return filemap;
}