PHP가 이미지를 받거나 디스크에 쓴 서버에 이미지 (또는 영화, ppt 등)를 업로드하기 위해 다중 부분 양식과 HTML5 파일 객체를 사용하는 코드가 있습니다. 그러나 PHP는 디스크에 전혀 쓰지 않는 것처럼 보입니다.PHP가 이미지 내용을 디스크에 쓰지 않는 이유는 무엇입니까?
자바 스크립트 :
function uploadFile (file, fileid) {
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {
if (xhr.readyState == 4) {
window["fn"+fileid] = xhr.responseText;
$("progress"+fileid).innerHTML = "<a href=\""+window["fn"+fileid]+"\">"+window["fn"+fileid]+"</a>";
}
}
var a = new Element("div");
a.id = "progress"+fileid;
a.setStyle("background-color", "#4682B4");
a.setStyle("height", "20px");
a.setStyle("width", "0px");
$("progress-wrapper").adopt(a);
xhr.upload.onprogress = function(e, a) {
var percent = Math.round((e.loaded*150)/e.total);
var acperct = Math.round(percent/1.5);
$("progress"+fileid).setStyle("width", percent);
$("progress"+fileid).innerHTML = file.name+" "+acperct+"%";
}
alpha = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNNOPQRSTUVWXYZ1234567890".split("");
tmp_name = [];
for (i = 0; i < 6; i++) tmp_name[i] = alpha[Math.floor(Math.random() * alpha.length)];
xhr.open("POST", "upload.php", true);
xhr.setRequestHeader("Content-Type", "multipart/form-data");
xhr.setRequestHeader("size", file.size);
xhr.setRequestHeader("name", file.name);
xhr.setRequestHeader("type", file.type);
xhr.setRequestHeader("tmp_name", ""+tmp_name.join(""));
xhr.send(file);
}
PHP :
<?
function apache_request_headers() {
foreach($_SERVER as $key=>$value) {
if (substr($key,0,5)=="HTTP_") {
$key=str_replace(" ","-",ucfirst(strtolower(str_replace("_","_",substr($key,5)))));
$out[$key]=$value;
}else{
$out[$key]=$value;
}
}
return $out;
}
$headers = apache_request_headers();
$contents = file_get_contents("php://input");
echo $contents;
$ffilename=$headers["tmp_name"].$headers["name"];
$all = array('png','jpeg','jpg','gif','mov','txt','wmv','pdf');
$fh = fopen("upload/".$ffilename, "w+");
fwrite($fh, $contents);
fclose($fh);
echo "upload/".$ffilename;
?>
무엇 발생하면 기록 된 파일에 아무것도 또는 텍스트 upload/
중 하나가 없습니다 것입니다.
무엇이 잘못 되었나요?
수신 한 내용을 에코하여 예상 한 결과를 얻었습니까? 수신 문제 일 수 있습니다. – MyStream
나는 반향을 시도한 후'경고 '를 시도했는데 그것은 임의의 ASCII 문자로 나타난다. 바이너리. – tekknolagi
을 디버깅하려면 var_dump()를 실행하여 $ fh를 시도하고 거기에 오류가 있는지 확인하십시오. 또한 파일 이름이 쓰기 가능인지보고 error_reporting()을 켭니다. 그것은 아마도 오류가 꺼지면서 조용히 실패 할 가능성이 높습니다. – MyStream