在项目开发的过程中,我们经常需要用到图片上传操作,传统的做法是我们将其上传到项目的所在目录中,比如说项目的目标目录中,但是由于项目在重启的过程中,目标文件夹下的内容会被全部清空,这意味着如果采用这种方式,那么在测试环境与开发环境,在每一次的项目重启的过程中,我们经常会遭遇图片丢失的情况,这种情况有时往往很让人头疼,因而有一个图片服务器对于项目的开发和测试而言,这是十分必要的。
在采用图片服务器的情况下,我们只需要像往常一样,由前台界面将图片上传到本地项目服务器中,然后本地的项目服务器会将该图片的数据流写入到远程的图片服务器中,由远程的图片服务器负责图片的存储,最后,远程的图片服务器会返回一个存储图片路径,在本地的服务器只需要存储该路径,在页面展示的时候,只需要在前台将该图片路径展示出来,即可完成对于远程图片服务器的调用。
@ResponseBody @RequestMapping (value=" https://www.yisu.com/imgUpLoadNewOneKuaYu ") 公共字符串imgUpLoadNewOneKuaYu (HttpServletRequest请求)抛出IOException { 字符串urlStr=" http://localhost: 9080/no-js/admin/上传”; String> Map<字符串;textMap=new HashMap<字符串,String> (); MultipartHttpServletRequest多请求=(MultipartHttpServletRequest)请求;//流的数据//取得请求中的所有文件名 Iteratoriter=multiRequest.getFileNames (); InputStream> Map<字符串;fileMap=new HashMap<字符串,InputStream> (); 如果(iter.hasNext ()) {//取得上传文件 MultipartFile文件=multiRequest.getFile (iter.next ()); 如果(文件!=null) {//取得当前上传文件的文件名称 字符串myFileName=file.getOriginalFilename (); InputStream fileInputStream=file.getInputStream (); fileMap。把(myFileName fileInputStream); } } ret=FileUpLoadNew字符串。formUpload (urlStr textMap fileMap); System.out.println (ret); 返回受潮湿腐烂; }
FileUpLoadNew
包net.sahv.bdyz.util; 进口java.io.BufferedReader; 进口java.io.DataInputStream; 进口java.io.DataOutputStream; 进口java.io.FileInputStream; 进口java.io.InputStream; 进口java.io.InputStreamReader; 进口java.io.OutputStream; 进口java.net.HttpURLConnection; 进口java.net.URL; 进口java.util.Iterator; 进口java.util.Map; 公开课FileUpLoadNew {/* * * @param urlStr * @param textMap * @param fileMap * @return */公共静态字符串formUpload (String urlStr Map<字符串,String>InputStream> textMap Map<字符串;fileMap) { 字符串res=" "; HttpURLConnection康涅狄格州=零; 字符串边界=" - - - - - - - - - - - - - - - - - - - - - - - - - - - - -123821742118716”;//边界就是请求头和上传文件内容的分隔符 尝试{ 网址URL=new URL (urlStr); 康涅狄格州=(HttpURLConnection) url.openConnection (); conn.setConnectTimeout (5000); conn.setReadTimeout (30000); conn.setDoOutput(真正的); conn.setDoInput(真正的); conn.setUseCaches(假); conn.setRequestMethod(“文章”); conn.setRequestProperty(“连接”、“维生”); conn.setRequestProperty(“用户代理”、“Mozilla/5.0(窗口;U;Windows NT 6.1;应用;房车1.9.2.6):“); conn.setRequestProperty(“内容类型”、“多部分/格式;边界边界=" +); OutputStream=new DataOutputStream (conn.getOutputStream ());//textMap:如果传送的是文本内容 如果(textMap !=null) { StringBuffer strBuf=new StringBuffer (); Iterator比;iter=textMap.entrySet () .iterator (); 而(iter.hasNext ()) { String> Map.Entry<字符串;输入=iter.next (); 字符串inputName=(字符串)entry.getKey (); 字符串inputValue=https://www.yisu.com/zixun/(字符串)entry.getValue (); 如果(inputValue==null) { 继续; } strBuf.append (“\ r \ n”) .append (“-”) .append(边界).append (" \ r \ n "); strBuf。追加(“附加项:格式;name=\ " + inputName +”\“\ r \ n \ r \ n”); strBuf.append (inputValue); } .getBytes out.write (strBuf.toString () ()); }//fileMap:如果传送的是文件流 如果(fileMap !=null) { Iterator 比;iter=fileMap.entrySet () .iterator (); 而(iter.hasNext ()) { InputStream> Map.Entry java实现后台图片跨域上传功能