Получить файл на стороне сервера с помощью php и приложения для Windows 8

0

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

  • 0
    Я не вижу ничего странного, кроме UploadImage(url, fichier); Я думаю, это опечатка от копирования и перевода (?). По крайней мере, на стороне клиента ... не могу помочь вам с PHP
Теги:
windows-store-apps
windows-8.1
winjs

1 ответ

0
Лучший ответ

Вам необходимо отправить запрос 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.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню