@Wolfak

Как загрузить файл на сайт с помощью Javascript?

Доброе время суток.
Подскажите пожалуйста, как в моем случае загрузить файл на сервер при помощи Javascript?
У меня есть вот такой код, с помощью которого я пытаюсь отправить файл на сервер.
var file = document.getElementById("LoadMyFile"),
xhr = new XMLHttpRequest(),
form = new FormData();

var upload_file = file.files[0];
form.append("mydate", "Мои данные");
form.append("NewPost", upload_file);
xhr.open("POST", "ссылка на мой документ PHP", true);
xhr.send(form);

if (xhr.status != 200) {
// Вывод ошибки
document.getElementById("HeadCameraPage").innerHTML = xhr.status + ': ' + xhr.statusText;
} else {
if (xhr.responseText > 0) {
// Все ок
} else {
// Вывод результата
 document.getElementById("HeadCameraPage").innerHTML = xhr.responseText;
}
}


В форме (input type="file") с ID LoadMyFile программно задана ссылка на файл с изображением так:
document.getElementById("LoadMyFile").files[0] = "Локальная ссылка на файл с изображением на компьютере";


Вот так принимаю файл на стороне сервера:
move_uploaded_file($_FILES["NewPost"]["tmp_name"],$_FILES["NewPost"]["name"]);


При отправке пишет ошибку со статусом 0.

Подскажите в чем может быть ошибка? Так заморочился с загрузкой файлов, так как пишу приложение под магазин Windows на Javascript (WinJS). Обычно все запросы на сервер работали как в браузере, а вот файл отправлять не хочет.
Надеюсь на помощь. Заранее, огромное спасибо!
  • Вопрос задан
  • 9542 просмотра
Решения вопроса 1
FuN_ViT
@FuN_ViT
веб-разработчик
Программно задавать ссылку на файл нельзя! Так сделано из соображений безопасности.

Только через диалоговое окно.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
coderisimo
@coderisimo Куратор тега JavaScript
может поможет. вот пример отправки файла на сервер :

var form = document.forms.namedItem("fileinfo");

    form.addEventListener('submit', function (e) {

        e.preventDefault();
        var fd = new FormData(form);
        fd.append("action", "upload_diagram_image");
        jQuery.ajax({
            url: base_url,
            type: "POST",
            data: fd,
            enctype: 'multipart/form-data',
            processData: false, // tell jQuery not to process the data
            contentType: false   // tell jQuery not to set contentType
        }).done(function (data) {
            if (data !== 'error') { //
            
            }
        });
        return false;
    });
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы