2
너무 큰 배열을 나는 다음과 같은 유틸리티가 있습니다IE9 - 바이너리에 DataURI - .atob, Uint8Array 및 ArrayBuffer에 대한 Polyfills - polyfill
// Utility function to remove base64 URL prefix and store base64-encoded string in a Uint8Array
// Courtesy: https://gist.github.com/borismus/1032746
function convertDataURIToBinary(dataURI) {
var BASE64_MARKER = ';base64,';
var base64Index = dataURI.indexOf(BASE64_MARKER) + BASE64_MARKER.length;
var base64 = dataURI.substring(base64Index);
var raw = window.atob(base64);
var rawLength = raw.length;
var array = new Uint8Array(new ArrayBuffer(rawLength));
for (i = 0; i < rawLength; i++) {
array[i] = raw.charCodeAt(i);
}
return array;
}
I는 다음과 같이 사용
// Read the binary contents of the base 64 data URL into a Uint8Array
// Append the contents of this array to the SP.FileCreationInformation
var arr = convertDataURIToBinary(convertedDataURI);
for (var i = 0; i < arr.length; ++i) {
fileCreateInfo.get_content().append(arr[i]);
}
로를 파일 업로드를 준비하십시오.
그것이 IE9에서 작동하려면 나는 다음 polyfills 사용 :
- base64을 - .atob
- TypedArray - UInt8Array 만들 때/ArrayBuffer 이제
나는 매우 유용 예외가 Uint8Array :
은 디버깅 후 나는 문제를 발견했다. 나는이 가치를 바꿀 수 있었지만 나는 그것이 그 이유를 추측한다.SCRIPT5022 : throw 된 예외 및 catch되지 않은 예외 0
if (obj.length > MAX_ARRAY_LENGTH) throw RangeError('Array too large for polyfill');
내 객체가
1085798
의length
가지고MAX_ARRAY_LENGTH
이100000
같다 :
누구든지 더 좋은 방법을 알고 있습니까?