JavaScript에서 Blob을 파일로 변환하는 방법
이미지를 노드에 업로드해야 합니다.JS 서버를 일부 디렉토리에 연결합니다.사용하고 있다connect-busboy
node module을 클릭합니다.
저는...dataURL
다음 코드를 사용하여 BLOB로 변환한 이미지의 경우:
dataURLToBlob: function(dataURL) {
var BASE64_MARKER = ';base64,';
if (dataURL.indexOf(BASE64_MARKER) == -1) {
var parts = dataURL.split(',');
var contentType = parts[0].split(':')[1];
var raw = decodeURIComponent(parts[1]);
return new Blob([raw], {type: contentType});
}
var parts = dataURL.split(BASE64_MARKER);
var contentType = parts[0].split(':')[1];
var raw = window.atob(parts[1]);
var rawLength = raw.length;
var uInt8Array = new Uint8Array(rawLength);
for (var i = 0; i < rawLength; ++i) {
uInt8Array[i] = raw.charCodeAt(i);
}
return new Blob([uInt8Array], {type: contentType});
}
이미지를 업로드하기 위해 BLOB를 파일로 변환하는 방법이 필요합니다.
누가 나 좀 도와줄래?
파일 생성자를 사용할 수 있습니다.
var file = new File([myBlob], "name");
w3 사양에 따라 BLOB에 포함된 바이트를 새로운 File 객체의 바이트에 추가하여 지정된 이름의 http://www.w3.org/TR/FileAPI/#dfn-file 파일을 만듭니다.
이 함수는 a를 변환합니다.Blob
에File
저한테는 잘 먹혀요.
Vanilla JavaScript
function blobToFile(theBlob, fileName){
//A Blob() is almost a File() - it's just missing the two properties below which we will add
theBlob.lastModifiedDate = new Date();
theBlob.name = fileName;
return theBlob;
}
TypeScript (적절한 타이핑이 있는 경우
public blobToFile = (theBlob: Blob, fileName:string): File => {
var b: any = theBlob;
//A Blob() is almost a File() - it's just missing the two properties below which we will add
b.lastModifiedDate = new Date();
b.name = fileName;
//Cast to a File() type
return <File>theBlob;
}
사용.
var myBlob = new Blob();
//do stuff here to give the blob some data...
var myFile = blobToFile(myBlob, "my-image.png");
Joshua P Nixon의 답변은 맞지만 저는 마지막 수정 날짜도 정해야 했습니다.여기 암호가 있습니다.
var file = new File([blob], "file_name", {lastModified: 1534584790000});
1534584790000은 "GMT: 2018년 8월 18일 토요일 9:33:10 AM"의 Unix 타임스탬프입니다.
타이프 스크립트
public blobToFile = (theBlob: Blob, fileName:string): File => {
return new File(
[theBlob as any], // cast as any
fileName,
{
lastModified: new Date().getTime(),
type: theBlob.type
}
)
}
자바스크립트
function blobToFile(theBlob, fileName){
return new File([theBlob], fileName, { lastModified: new Date().getTime(), type: theBlob.type })
}
산출량
File {name: "fileName", lastModified: 1597081051454, lastModifiedDate: Mon Aug 10 2020 19:37:31 GMT+0200 (Eastern European Standard Time), webkitRelativePath: "", size: 601887, …}
lastModified: 1597081051454
lastModifiedDate: Mon Aug 10 2020 19:37:31 GMT+0200 (Eastern European Standard Time) {}
name: "fileName"
size: 601887
type: "image/png"
webkitRelativePath: ""
__proto__: File
작업하기 위해서는 BLOB에 포함되어 있는 타입을 명시적으로 제공해야 합니다.
const file = new File([blob], 'untitled', { type: blob.type })
나의 현대적 변종:
function blob2file(blobData) {
const fd = new FormData();
fd.set('a', blobData);
return fd.get('a');
}
이 문제는 몇 시간 동안 나를 괴롭혔다.Nextjs를 사용하여 캔버스를 이미지 파일로 변환하려고 했습니다.
다른 사람의 솔루션을 사용했지만 생성된 파일이 비어 있었습니다.
따라서 이것이 문제라면 파일 객체의 크기 속성을 언급해야 합니다.
new File([Blob], `my_image${new Date()}.jpeg`, {
type: "image/jpeg",
lastModified: new Date(),
size: 2,
});
중요하지 않은 가치를 키만 더하면 됩니다.
사용한 적이 있다FileSaver.js
파일로 저장합니다.
레포는 https://github.com/eligrey/FileSaver.js/ 입니다.
사용방법:
import { saveAs } from 'file-saver';
var blob = new Blob(["Hello, world!"], {type: "text/plain;charset=utf-8"});
saveAs(blob, "hello world.txt");
saveAs("https://httpbin.org/image", "image.jpg");
언급URL : https://stackoverflow.com/questions/27159179/how-to-convert-blob-to-file-in-javascript
'source' 카테고리의 다른 글
MySQL: #126: 테이블에 대한 잘못된 키 파일 (0) | 2022.10.27 |
---|---|
구성 및 라이브러리 파일을 사용하여 MySQL을 완전히 제거하려면 어떻게 해야 합니까? (0) | 2022.10.27 |
왜 JUnit을 테스트에 사용하는가? (0) | 2022.10.27 |
페이지가 로드되었을 때 기능을 실행하는 방법은 무엇입니까? (0) | 2022.10.27 |
SQL에서 날짜 간 평균 시간 계산 (0) | 2022.10.27 |