Есть простая форма в которой указывается имя, описания и само видео, которое загружается вконтакте асинхронно
<?php
require 'private/config.php';
header('Access-Control-Allow-Origin: http://*.vk.com');
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Video</title>
<script src="http://vkontakte.ru/js/api/openapi.js" type="text/javascript"></script>
<script type="text/javascript">
var config = <?=json_encode($config) ?>;
var vk_init = { apiId: config.vk.id };
var form;
addEventListener('load', function() {
VK.init(vk_init);
form = document.forms[0];
form.addEventListener('submit', submit);
});
function submit(e) {
e.preventDefault();
var name = document.getElementsByName('name')[0].value;
var description = document.getElementsByName('description')[0].value;
var video_info = {
gid: 45661650,
name: name
};
if (description)
video_info.description = description;
VK.Api.call('video.save', video_info, vk_save);
return false;
}
function vk_save(vk_data) {
if (vk_data.error)
console.log(vk_data.error);
else {
var data = new FormData(form);
var ajax = new XMLHttpRequest();
ajax.open('post', vk_data.response.upload_url);
ajax.onloadend = function() {
console.log(ajax);
};
ajax.send(data);
}
}
</script>
</head>
<body>
<form method="post" enctype="multipart/form-data">
<input type="text" name="name" placeholder="Назва" required />
<input type="text" name="description" placeholder="Опис" />
<input type="file" name="video_file" />
<input type="submit" />
</form>
</body>
</html>
В ответ я получаю
кроме этого Chrome выдает ошибку
XMLHttpRequest cannot load http://cs523100.vk.com/upload_video.php?act=add_vi.... No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'highway' is therefore not allowed access.
Хотя видео загрузилось из именем и описанием
В Firefox без предупреждения тоже не обошлось
Use of getPreventDefault() is deprecated. Use defaultPrevented instead.
а responseType и responseText пусты также