文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

怎么使用Java服务器处理图片上传

2023-07-02 12:27

关注

这篇文章主要介绍了怎么使用Java服务器处理图片上传的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么使用Java服务器处理图片上传文章都会有所收获,下面我们一起来看看吧。

一、简述

第一:浏览器上传图片实现;

第二:微信小程序上传图片实现;

二、图片上传功能实现

处理H5的单文件上传实现:

package cn.ncist.tms.attachment.controller; import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.util.HashMap;import java.util.Map; import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse; import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import org.springframework.web.bind.annotation.RequestParam;import org.springframework.web.bind.annotation.ResponseBody;import org.springframework.web.multipart.MultipartFile; @RequestMapping(value = "/fileUpload")@Controllerpublic class AttachmentUpload {            @RequestMapping(value = "/doFileUpload",method = RequestMethod.POST)    @ResponseBody    public Map<String,Object> doFileUpload(HttpServletRequest request,            HttpServletResponse reponse,            @RequestParam("file") MultipartFile srcFile) throws IOException{                                //1.变量声明        Map<String,Object> result = null;// 返回结果变量        FileOutputStream fos = null;     //写入文件的变量        File destFile = null;    //写入的目的地文件(distination)                try {            result = new HashMap<String,Object>();                        //2.参数验证            if(srcFile == null){                throw new RuntimeException("上传文件不存在");            }            if(srcFile.getBytes().length == 0){                throw new RuntimeException("上传文件内容为空");            }                        //3.操作文件对象,写入本地目录的文件中                        //3.1 截取文件后缀            String ext = srcFile.getOriginalFilename().substring(srcFile.getContentType().lastIndexOf( ".")+1);            //3.2 实例化目标文件,根据当前的操作系统,指定目录文件,            destFile = new File("D:"+File.separator+"descFolder"+File.separator+"descFile."+ext);            //3.3 实例化流            fos = new FileOutputStream(destFile);            //3.4 获取写入的字节数组,并写入文件                byte[] srcBytes = srcFile.getBytes();            fos.write(srcBytes);            fos.flush();            //4.对输入、输出流进行统一管理            //已在文件finally代码块处理                        result.put( "code", "S");            result.put( "msg", "服务调用成功");            result.put( "path", destFile.getAbsolutePath());            return result;        } catch (Exception e) {            // TODO: handle exception            e.printStackTrace();            result = new HashMap<String,Object>();            result.put( "code", "F");            result.put( "msg", "服务调用失败");            result.put( "path", null);            return result;        } finally{            //关闭系统资源,避免占用资源.            if(fos != null){                fos.close();            }        }    }}

微信或手机APP上传图片文件的代码实现:

import java.io.BufferedInputStream;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.util.Enumeration;import java.util.HashMap;import java.util.Iterator;import java.util.Map;import java.util.Set; import javax.annotation.Resource;import javax.servlet.ServletInputStream;import javax.servlet.ServletOutputStream;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse; import org.jboss.netty.handler.codec.http.HttpRequest;import org.springframework.mock.web.MockMultipartFile;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import org.springframework.web.bind.annotation.RequestParam;import org.springframework.web.bind.annotation.ResponseBody;import org.springframework.web.multipart.MultipartFile;import org.springframework.web.multipart.MultipartHttpServletRequest; import com.hlinkcloud.ubp.core.constant.RedisKeyConstant;import com.hlinkcloud.ubp.core.service.RedisService;import com.hlinkcloud.ubp.core.util.BaseStringUtil;import com.hlinkcloud.ubp.facade.bean.common.FastDFSFile;import com.hlinkcloud.ubp.facade.bean.common.FileManagerConfig;import com.hlinkcloud.ubp.facade.service.common.FileInfoService;import com.hlinkcloud.ubp.facade.service.permission.UserService;import com.hlinkcloud.ubp.facade.util.DictionaryCommUtil; import fr.opensagres.xdocreport.core.io.internal.ByteArrayOutputStream; @Controller@RequestMapping("/wx_upload")public class WxUploadImgBusiness {     @Resource    private UserService userService;     @Resource    private RedisService redisService;     @Resource(name = "commonUtil")    private DictionaryCommUtil commUtil;     @Resource    private FileInfoService fileService;         @RequestMapping("/getUploadFilePath")    @ResponseBody    public Map<String, Object> doWxUploadFile(HttpServletRequest request, HttpServletResponse response) {         HashMap<String, Object> map = new HashMap<String, Object>();                try {                                     // 1.将请求转化为操作流的请求对象.            MultipartHttpServletRequest req = (MultipartHttpServletRequest) request;            MultipartFile picture = req.getFile("file");                        if(picture != null && picture.getBytes().length != 0){                // 2.将图片上传到服务器                byte[] bytes = picture.getBytes();                String ext = picture.getOriginalFilename().substring(                        picture.getOriginalFilename().lastIndexOf(".") + 1                        );                // (备注:下列代码为内部业务代码,可根据公司自身的需求,进行更改)                                                map.put("code", "S");                map.put( "msg", "服务调用成功");                map.put("statusCode", 200);                map.put("data", filePath);            }else{                throw new RuntimeException("上传图片异常或空图片!");            }        } catch (IOException e) {            e.printStackTrace();            map.put("code", "F");            map.put("msg", "服务调用失败");            map.put("statusCode", 500);            map.put("data", null);        }        return map;    }            @RequestMapping(value = "/doUploadFileOfCI" , method = RequestMethod.POST )    public @ResponseBody Map<String,Object> doUploadFile(            HttpServletRequest request,//请求对象            HttpServletResponse response) throws IOException{//响应对象                System.out.println("doTestMultipartFile:");                MultipartHttpServletRequest req = (MultipartHttpServletRequest) request;        //此时说明请求对象是MultipartHttpServletRequest对象        MultipartFile picture = req.getFile("UploadedImage");                //遍历请求得到所有的数据.        if(req != null){                        //获取所有属性名            Enumeration enume= req.getAttributeNames();            while(enume.hasMoreElements()){                System.out.println("enume:"+enume.nextElement());            }                        //获取所有文件名            Iterator<String> fileNames = req.getFileNames();            while(fileNames.hasNext()){                System.out.println("fileNames:"+fileNames.next());            }                        //获取操作文件的map            Map<String,MultipartFile> fileMap =  req.getFileMap();            if(fileMap != null && fileMap.size() > 0){                Set<String> set = fileMap.keySet();                for(String key:set){                    System.out.println("String:"+key);                }            }                        //获取请求流            InputStream is = req.getInputStream();            System.out.println("InputStream:"+is);            int length = -1;            while( (length = is.read()) != -1 ){                System.err.println("data:"+length);            }                        //获取所有请求参数            Enumeration enumee = req.getParameterNames();            while(enumee.hasMoreElements()){                System.out.println("enumee:"+enumee.nextElement());            }        }                System.out.println(picture);                        return null;    } }

关于“怎么使用Java服务器处理图片上传”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“怎么使用Java服务器处理图片上传”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注编程网行业资讯频道。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-服务器
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯