通过window.URL.createObjectURL()方法生成的资源URL
bdFile="Blob:http...3a%/asdasd89090786" 这种。
能够使用Java: File file2 = new File(bdFile);创建文件吗,
还是使用new FileInputStream(bdFile) 建立输入流.
嗯,问题就是怎么通过这种url 上传文件,对这样的url使用不太了解。
我也碰到同样的问题,请问您解决了吗?
我也遇到了同样的问题。。。求解决方案
同求,博主找到解决方案了没啊?
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;
}
}