baidu_25166851
2015-01-08 09:41
采纳率: 0%
浏览 6.5k

window.URL.createObjectURL 文件上传

通过window.URL.createObjectURL()方法生成的资源URL
bdFile="Blob:http...3a%/asdasd89090786" 这种。
能够使用Java: File file2 = new File(bdFile);创建文件吗,
还是使用new FileInputStream(bdFile) 建立输入流.
嗯,问题就是怎么通过这种url 上传文件,对这样的url使用不太了解。

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

4条回答 默认 最新

  • IlikeMOving 2016-05-09 08:43

    我也碰到同样的问题,请问您解决了吗?

    点赞 打赏 评论
  • qq_22746137 2016-06-02 02:51

    我也遇到了同样的问题。。。求解决方案

    点赞 打赏 评论
  • b986586726 2016-08-14 08:19

    同求,博主找到解决方案了没啊?

    点赞 打赏 评论
  • huang_zi 2018-05-21 05:41

    var img=new Img;
    img.src='blob:http://localhost:31431/c669b20c'
    img.onload=function(){
     var url="http://p1.pstatp.com/large/435d000085555bd8de10";
    getBase64(url)
    .then(function(base64){
    console.log(base64);//处理成功打印在控制台
    //在这里调用后台代码,可以用ajax
    },function(err){
    console.log(err);//打印异常信息
    });

    }

    //传入图片路径,返回base64
    function getBase64(img){
        function getBase64Image(img,width,height) {//width、height调用时传入具体像素值,控制大小 ,不传则默认图像大小
          var canvas = document.createElement("canvas");
          canvas.width = width ? width : img.width;
          canvas.height = height ? height : img.height;
    
          var ctx = canvas.getContext("2d");
          ctx.drawImage(img, 0, 0, canvas.width, canvas.height);
          var dataURL = canvas.toDataURL();
          return dataURL;
        }
        var image = new Image();
        image.crossOrigin = '';
        image.src = img;
        var deferred=$.Deferred();
        if(img){
          image.onload =function (){
            deferred.resolve(getBase64Image(image));//将base64传给done上传处理
          }
          return deferred.promise();//问题要让onload完成后再return sessionStorage['imgTest']
        }
      }
    
            后台用String接收这个base64的数据,然后用一个工具类转化成MultipartFile对象,接下来的操作就和直接传文件是一样的了:
            public static MultipartFile base64ToMultipart(String base64) {
    try {
        String[] baseStrs = base64.split(",");
    
        BASE64Decoder decoder = new BASE64Decoder();
        byte[] b = new byte[0];
        b = decoder.decodeBuffer(baseStrs[1]);
    
        for(int i = 0; i < b.length; ++i) {
            if (b[i] < 0) {
                b[i] += 256;
            }
        }
    
        return new BASE64DecodedMultipartFile(b, baseStrs[0]);
    } catch (IOException e) {
        e.printStackTrace();
        return null;
    }
    

    }

    点赞 打赏 评论

相关推荐 更多相似问题