0

これが私が今日遭遇した非常に単純な問題であり、私には非常にイライラしています:HTMLの「ファイルを選択」入力を介してビデオファイルをアップロードしているとしましょう。ビデオを送信するためのonclickjavaスクリプト関数を呼び出す送信ボタンがあります。 phpファイルに変換し、ビデオに関するデータを元のページに戻します(echo $ _FILES [$ myvideoupload] ['name']のような単純なもの)すべてXMLhttpRequest()を介して。

これは可能ですか?

現在のように、ビデオは単に私のajax関数を介してphpファイルに渡されていません。document.getElementByID( "stuff")はビデオファイルに対して機能しますか?それとも、send(var)でvarをフォーマットする方法についてですか?XMLHttpRequest()を介してファイルを渡すことに関するアイデアや知識は素晴らしいでしょう。

これは、jsでコメントアウトされたファイルの試行を含む私のそれほど素晴らしいコードではありません。お役に立てれば。

<html>
<head>

<link href="jquery-ui.css" rel="stylesheet" type="text/css"/>
<script src="jquery.js"></script>
<script src="jquery-ui.js"></script>


<script language="JavaScript" type="text/javascript">

function file_upload(){
    var hr = new XMLHttpRequest();
    var url = "vidcon.php";

    if(document.getElementById('preset_mp4').checked) {
        pr = document.getElementById("preset_mp4").value;
    }else if(document.getElementById('preset_ogg').checked) {
    pr = document.getElementById("preset_ogg").value;
    }else if(document.getElementById('preset_mov').checked) {
    pr = document.getElementById("preset_mov").value;
    }else if(document.getElementById('preset_wmv').checked) {
    pr = document.getElementById("preset_wmv").value;
    }else if(document.getElementById('preset_3gp').checked) {
        pr = document.getElementById("preset_3gp").value;
}

    //var fd = new FormData();
    //fd.append('uploadedfile', document.getElementByID("uploadedfile").files[0]);
    var vars = "preset="+pr;
    hr.open("POST", url, true);
    hr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    hr.onreadystatechange = function() {
        if(hr.readyState == 4 && hr.status == 200) {
                var return_data = hr.response;
        document.getElementById("status").innerHTML = return_data;
                }
}

hr.send(vars);
document.getElementById("status").innerHTML = "processing...";
}
</script>
</head>

<body>
<input type="hidden"/>
<form enctype="multipart/form-data" action="" method="POST">
Choose pload:<br> <input id="uploadedfile" name="uploadedfile" type="file" /><br />
</form>
Select Output Format for Conversion (changes will be made to conversion settings) <br>
<div class="field form-inline radio">
<input id="preset_mp4" name="preset" type="radio" value="mp4">mp4<br>
<input id="preset_ogg" name="preset" type="radio" value="ogg">ogg<br>
<input id="preset_mov" name="preset" type="radio" value="mov">mov<br>
<input id="preset_wmv" name="preset" type="radio" value="wmv">wmv<br>
<input id="preset_3gp" name="preset" type="radio" value="3gp">3gp<br>
</div>
<input type="submit" value="Upload File" onClick="javascript:file_upload();"/>
<div id="status"></div>
</body>
4

1 に答える 1

2

FormDataajax 経由でファイルをアップロードするには、オブジェクトを使用する必要があります。何かのようなもの

var fd = new FormData();
fd.append('preset', pr);
fd.append('videofile', document.getElementByID("videofileinputid").files[0]);
hr.open("POST", url, true); 
hr.onreadystatechange = function() { 
    if(hr.readyState == 4 && hr.status == 200) { 
        var return_data = hr.response; 
        document.getElementById("status").innerHTML = return_data; 
    } 
} 
hr.send(fd); 
document.getElementById("status").innerHTML = "processing..."; 

すべてのブラウザが FormData オブジェクトをサポートしているわけではありませんが、これらは ajax ファイルのアップロードをシミュレートする js ライブラリであることに注意してください。

于 2012-10-17T18:56:20.223 に答える