Я пытаюсь загрузить файл на сервере (в настоящее время на моем локальном wamp), с приложением Windows 8, работающим с HTML и JavaScript. Итак, это мой код:
(function () {
"use strict";
WinJS.Binding.optimizeBindingReferences = true;
var app = WinJS.Application;
var activation = Windows.ApplicationModel.Activation;
app.onactivated = function (args) {
if (args.detail.kind === activation.ActivationKind.launch) {
if (args.detail.previousExecutionState !== activation.ApplicationExecutionState.terminated) {
} else {
}
args.setPromise(WinJS.UI.processAll().then(function () {
document.getElementById('boutonEnvoyer').onclick = function () {
var selector = Windows.Storage.Pickers.FileOpenPicker();
selector.fileTypeFilter.replaceAll(["*"]);
selector.pickSingleFileAsync().then(function (file) {
if (!file) {
console.log('No file selected');
return;
}
var url = 'http://192.168.10.28/videomaton/index.php';
UploadImage(url, fichier);
});
};
var UploadImage = function (urlString, file) {
try {
var uri = Windows.Foundation.Uri(urlString);
var uploader = new Windows.Networking.BackgroundTransfer.BackgroundUploader();
//Set a header to be able to save the file
uploader.setRequestHeader("Filename", file.name);
//Create the operation
var upload = uploader.createUpload(uri, file);
upload.startAsync().then(
function succes(res) {
console.log('goodgame');
},
function error(res) {
console.log(res);
},
function progression(res) {
var pourcent = Math.round(res.progress.bytesSent * 100 / res.progress.totalBytesToSend);
console.log(pourcent + '%');
}
);
} catch (err) {
console.log('try and catch missed');
}
};
}));
}
};
app.oncheckpoint = function (args) {
};
app.start();
})();
Кажется, это работает, но вот моя проблема: мой javascript-консоль продвигается до 100% и говорит "goodgame". Но на моей стороне сервера я ничего не получил.
Вот мой php-код:
$arr = get_defined_vars();
ob_start();
var_dump($arr);
$result = ob_get_clean();
file_put_contents('fichier.txt', $result);
И когда я смотрю на это "fichier.txt" _Files пуст, но у меня есть строка с HTTP_FILENAME => 7.jpg (это имя моего изображения, которое я пытаюсь загрузить).
Спасибо вам за помощь! H4mm3R
Вам необходимо отправить запрос multipart/form-data
.
Попробуйте (псевдокод):
var contentPart = new Windows.Networking.BackgroundTransfer.BackgroundTransferContentPart("myField", file.name);
contentPart.SetFile(file)
var parts = [];
parts.push(contentPart);
var uploader = new Windows.Networking.BackgroundTransfer.BackgroundUploader();
uploader.createUploadAsync(uri, parts).then(function (upload) {
upload.startAsync().then( ... );
});
Затем проверьте файл в переменной PHP $_FILES
.
UploadImage(url, fichier);
Я думаю, это опечатка от копирования и перевода (?). По крайней мере, на стороне клиента ... не могу помочь вам с PHP