버튼을 갖고 싶으면 클릭하고 로컬 디렉토리를 열어 사용자가 이미지를 선택할 수 있도록합니다. 선택한 후에는 해당 디렉토리 소스 주소를 저장하고이를 <img src=""/>
의 src에 전달하여 표시해야합니다.ReactJS + Redux : Mozilla File API를 사용하여 로컬 이미지를 선택하고 웹에 업로드하는 방법?
나는 그것을 달성하기 위해 다음 사용하는 것을 시도하고있다 : https://developer.mozilla.org/en-US/docs/Using_files_from_web_applications
그것의 HTML은 다음과 같습니다
export default class fileUploader extends Component {
render(){
return(
<div>
<input type="file" id="fileElem" multiple accept="image/*" style="display:none" onchange="handleFiles(this.files)"/>
<a href="#" id="fileSelect">Select some files</a>
<div id="fileList">
<p>No files selected!</p>
</div>
</div>
)
}
}
과 JS입니다 : HTML에 대한 <input ...>
를 들어
window.URL = window.URL || window.webkitURL;
var fileSelect = document.getElementById("fileSelect"),
fileElem = document.getElementById("fileElem"),
fileList = document.getElementById("fileList");
fileSelect.addEventListener("click", function (e) {
if (fileElem) {
fileElem.click();
}
e.preventDefault(); // prevent navigation to "#"
}, false);
function handleFiles(files) {
if (!files.length) {
fileList.innerHTML = "<p>No files selected!</p>";
} else {
fileList.innerHTML = "";
var list = document.createElement("ul");
fileList.appendChild(list);
for (var i = 0; i < files.length; i++) {
var li = document.createElement("li");
list.appendChild(li);
var img = document.createElement("img");
img.src = window.URL.createObjectURL(files[i]);
img.height = 60;
img.onload = function() {
window.URL.revokeObjectURL(this.src);
}
console.log(img.height)
li.appendChild(img);
var info = document.createElement("span");
info.innerHTML = files[i].name + ": " + files[i].size + " bytes";
li.appendChild(info);
}
}
}
오류가 발생했습니다 : Unterminated JSX contents
. 무엇이 문제 일 수 있습니까? 나는/<input.../>
에 대한 추가를 시도했지만 여전히 오류가 발생합니다.
또한 JS를 수정하여 하나의 이미지 파일을 선택하고 해당 디렉토리 소스 주소를 <img/>
의 src로 전달할 수있게하려면 어떻게해야합니까?
React를 사용하면서 수동으로 DOM 요소를 생성하는 이유는 무엇입니까? – Dodekeract
@Dodekeract 나를 안내해 주시겠습니까? 아직도 배우는 순간에 반응.이 처음에 오류를 잡아 내지 않는 이유는 무엇입니까? –
[this] (https://facebook.github.io/react/tips/inline-styles.html)이 문제 일 수 있습니다. – Dodekeract