web上传图片到七牛云服务器

Posted SDingBa

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了web上传图片到七牛云服务器相关的知识,希望对你有一定的参考价值。

本文通过java web的使用,把要上传的图片通过浏览器上传到服务器上面.
` 文本仅供参考,可能出现很多不合理;


` 1 创建对应的jsp页面:
下面是jsp下面的对应的from表单,上传文件用的那么ImgFiles的属性名称,同样你可以使用其他的,或者以数组的形式,比如imgFiles[0],…

<form action="http://ipAdress:9010/api/sdingba/upload" method="post"
      enctype="multipart/form-data">
    <p>
        选择文件:<input type="file" name="imgFiles">
    <p>
        选择文件:<input type="file" name="imgFiles">
    <p>
        选择文件:<input type="file" name="imgFiles">
    <p>
        <input type="submit" value="提交">
</form>

2, 创建对应的voParam
本文主要将文件上传,不涉及其他的参数

private List<MultipartFile> imgFiles;
// set and get method ...

3,创建对应的控制器Controller
用控制器的方式,绑定参数的方式添加对应的图片文件的属性.

    @ResponseBody
    @RequestMapping("/upload")
    public BaseVO addMaterialData(AdMaterialParam param) 
    
        List<MultipartFile> multipartFiles = adMaterialParam.getImgFiles();
        //这样就算获取到了上传的文件了,
        //如果你吧文件添加到服务器本地上面,你可以使用org.apache.commons.io下面的FileUtils对象直接吧文件复制到本地,
        //比如:FileUtils.copyInputStreamToFile(file.getInputStream(), new File(path, filename));
    

4,但是如果想上传到七牛云还是要做很多的处理的;如下
比如,你可能要处理文件的大小格式后在添加到云上面,等等,

本文的文件上传的格式使用的是MultipartFile属性的imgFile.getBytes()属性,
imgFile.getInputStream()可以获取流信息;
    //imageFiles是获取到的  List<MultipartFile>
    List<AdImagePath> adImagePaths = new ArrayList<>();
        AdImagePath adImagePath;
  for (int i = 0; i < imageFiles.size(); i++) 
            adImagePath = new AdImagePath();
            adImagePath.setMaterialId(adMaterialId);
            MultipartFile imgFile = imageFiles.get(i);

            try 
                boolean isImage = isImage(imgFile.getInputStream());
                if (isImage) 
                    // 处理文件 大小
                    byte[] imgBytes = setImageTypeSize(setWidth, setHeight, imgFile);

                    if (!CollectionUtils.sizeIsEmpty(imgBytes)) 
                        String resultPath = qiniuYunUtils.upload(imgBytes, imgFile.getOriginalFilename(),
                                String.valueOf(i + 1));
                        // String resultPath=qiniuYunUtils.upload(imgFile.getBytes(),imgFile.getOriginalFilename());
                        String path = JSON.parseObject(resultPath).get("key").toString();
                        adImagePath.setImageUrl(path);
                    
                
             catch (IOException e) 
                e.printStackTrace();
                jsonObject.put("result", "error");
            
            adImagePaths.add(adImagePath);
        
**以下是上面那段代码包含的函数;不足的参考上一篇博客,utils**
/**
     * 判断文件是否是图片格式
     *
     * @param imageFile
     * @return
     */
    private boolean isImage(InputStream imageFile) 
        Image img = null;
        try 
            img = ImageIO.read(imageFile);
            if (img == null || img.getWidth(null) <= 0 || img.getHeight(null) <= 0) 
                return false;
            
            return true;
         catch (Exception e) 
            return false;
         finally 
            img = null;
        
    
   /**
     * 设置图片格式的大小
     *
     * @param setWidth
     * @param setHeight
     * @param imgFile
     * @return
     * @throws IOException
     */
    private byte[] setImageTypeSize(int setWidth, int setHeight, MultipartFile imgFile) throws IOException 
        byte[] imgBytes;
        if (setWidth > 0 || setHeight > 0) 
            imgBytes = qiniuYunUtils.resizeImageFile(imgFile.getInputStream(), setWidth, setHeight);
         else 
            imgBytes = imgFile.getBytes();
        
        return imgBytes;
    
 /**
     * 上传文件
     * 
     * @param file byte[]
     * @param fileName
     * @return 文件名
     */
    public static String upload(byte[] file, String fileName, String orderBy) 
        String key = orderBy + "=" + UUID.randomUUID().toString() + "_" + fileName;
        UploadManager uploadManager = new UploadManager();// 创建上传对象
        try 
            Response res = uploadManager.put(file, key, getUpToken());
            return res.bodyString();
         catch (QiniuException e) 
            Response r = e.response;
            LOGGER.error("上传七牛云异常:", r.toString());
            try 
                LOGGER.error("上传七牛云异常:", r.bodyString());
                System.out.println();
             catch (QiniuException e1) 
            
        
        return null;
    
**下一篇博客将 七牛云的数据怎么下载.**

以上是关于web上传图片到七牛云服务器的主要内容,如果未能解决你的问题,请参考以下文章

如何将图片上传到七牛云平台?

上传图片到七牛云(服务端 node.js sdk)

如何自动上传文件到七牛云

ThinkPHP6上传图片七牛云 如何上传文件到七牛云对象储存cos

Vue 上传图片到七牛云实用攻略

ueditor上传图片到七牛云存储(form api,java)