curl로 이미지 긁어와서 file에 넣어주기
<?php
function get($url, $params = array()) {
$url = $url . '?' . http_build_query($params, '', '&');
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.71 Safari/537.36');
$response = curl_exec($ch);
curl_close($ch);
return $response;
}
$url = "https://i.namu.wiki/i/l0x04r27DjSQmS-WgYk6I5x6IkKMyvZjRMyK5dI3EMoMikzCd2Kfl2SMRdvL3-y4zpxI_qLP-fs3QToSR7AU3g.webp";
$imageData = get($url);
$base64Image = base64_encode($imageData);
// JavaScript에서 사용하기 위해 base64 데이터를 JavaScript 변수에 저장
echo "<script>
var base64Image = 'data:image/jpeg;base64,$base64Image';
</script>";
?>
<!DOCTYPE html>
<html>
<head>
<title>Image Upload</title>
</head>
<body>
<input type="file" name='file' id="fileInput">
<script>
// base64 데이터를 Blob 객체로 변환
function base64ToBlob(base64, contentType) {
const byteCharacters = atob(base64.split(',')[1]);
const byteNumbers = new Array(byteCharacters.length);
for (let i = 0; i < byteCharacters.length; i++) {
byteNumbers[i] = byteCharacters.charCodeAt(i);
}
const byteArray = new Uint8Array(byteNumbers);
return new Blob([byteArray], {type: contentType});
}
const base64String = base64Image;
const contentType = 'image/jpeg'; // 이미지의 실제 컨텐츠 타입을 지정
const blob = base64ToBlob(base64String, contentType);
const file = new File([blob], 'image.jpg', {type: contentType});
// DataTransfer 객체를 사용하여 input file에 파일 추가
const dataTransfer = new DataTransfer();
dataTransfer.items.add(file);
document.getElementById('fileInput').files = dataTransfer.files;
</script>
</body>
</html>