进出口寻找调整图像大小前,它被上传到服务器,此刻我使用NG2-imageupload这样的:角2图像调整上传前
<input id="media" class="inputfile" type="file" name="media" image-upload
(imageSelected)="selected($event)"
[resizeOptions]="resizeOptions" (change)="onChange($event)">
出口类WpMediaFormComponent { 文件:文件;
resizeOptions: ResizeOptions = {
resizeMaxHeight: 768,
resizeMaxWidth: 438
};
selected(imageResult: ImageResult) {
console.log(imageResult);
this.dataBlob = this.dataURItoBlob(imageResult.resized.dataURL);
let blob = this.dataURItoBlob(imageResult.resized.dataURL);
}
这则返回一个对象,像这样:
dataURL:"data:image/jpeg;base64, DATA URI HERE"
type:"image/jpeg;"
然后我就可以使用此功能此对象转换为BLOB:
dataURItoBlob(dataURI) {
// convert base64/URLEncoded data component to raw binary data held in a string
var byteString;
if (dataURI.split(',')[0].indexOf('base64') >= 0)
byteString = atob(dataURI.split(',')[1]);
else
byteString = decodeURI(dataURI.split(',')[1]);
// separate out the mime component
var mimeString = dataURI.split(',')[0].split(':')[1].split(';')[0];
// write the bytes of the string to a typed array
var ia = new Uint8Array(byteString.length);
for (var i = 0; i < byteString.length; i++) {
ia[i] = byteString.charCodeAt(i);
}
return new Blob([ia], {type:mimeString});
}
这样做,我上传之前图像到服务器使用此代码:
onChange(event: EventTarget) {
let eventObj: MSInputMethodContext = <MSInputMethodContext> event;
let target: HTMLInputElement = <HTMLInputElement> eventObj.target;
let files: FileList = target.files;
this.file = files[0];
console.log(this.file);
//this.update.emit(this.file);
}
有没有人有想法,我怎么可以将dataURItoBlob方法返回的blob提供给文件上传onChange事件?
我有点迷路了。
我很确定这是不可能的,但愿意被证明,否则! – Davy
噢,但它是,我只需要一个800kB的文件,并发布为30kB,将很快发布更新。所有服务器端的宝贝! – rhysclay
我现在困惑了,是在客户端还是服务器上完成的大小调整? – Davy