Это не так уж сложно. Во-первых, взгляните на FileReader Interface .
Итак, когда форма отправлена, перехватите процесс отправки и
var file = document.getElementById('fileBox').files[0]; //Files[0] = 1st file
var reader = new FileReader();
reader.readAsText(file, 'UTF-8');
reader.onload = shipOff;
//reader.onloadstart = ...
//reader.onprogress = ... <-- Allows you to update a progress bar.
//reader.onabort = ...
//reader.onerror = ...
//reader.onloadend = ...
function shipOff(event) {
var result = event.target.result;
var fileName = document.getElementById('fileBox').files[0].name; //Should be 'picture.jpg'
$.post('/myscript.php', { data: result, name: fileName }, continueSubmission);
}
Затем на стороне сервера (т.е. myscript.php):
$data = $_POST['data'];
$fileName = $_POST['name'];
$serverFile = time().$fileName;
$fp = fopen('/uploads/'.$serverFile,'w'); //Prepends timestamp to prevent overwriting
fwrite($fp, $data);
fclose($fp);
$returnData = array( "serverFile" => $serverFile );
echo json_encode($returnData);
Или что-то вроде этого. Я могу ошибаться (и, если я, пожалуйста, поправьте меня), но это должно сохранить файл как что-то вроде 1287916771myPicture.jpg
в /uploads/
на вашем сервере и ответить переменной JSON (функции continueSubmission()
) содержащий имя файла на сервере.
Выезд fwrite()
и jQuery.post()
.
На приведенной выше странице подробно описано, как использовать readAsBinaryString()
, readAsDataUrl()
и readAsArrayBuffer()
для других ваших нужд (например, изображения, видео и т. д.).