Я пытаюсь загрузить файл на сервер (в настоящее время в моем локальном 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
переменная.
Других решений пока нет …