Загружайте файлы асинхронно (AJAX) методом HTTP / 1.1 PUT, почему бы и нет? - PullRequest
0 голосов
/ 03 октября 2010

Возможна загрузка файлов методом PUT, даже двоичным или текстовым, через «обычный веб-браузер» Почему многие просто говорят, что это невозможно?

Пример кода с использованием jQuery и PHP.

$(document).ready(function() {
    $("#uploadbutton").click(function() {
        var filename = $("#file").val();
        $.ajax({ 
        type: "PUT",
        url: "addFile.do",
           enctype: 'multipart/form-data',
           data: {file: filename},
          success: function(){
               alert( "Data Uploaded: ");
            }
        });     
    });
});

На стороне сервера просто прочитайте поток STDIN, как

<?php
/* PUT data comes in on the stdin stream */
$putdata = fopen("php://input", "r");

/* Open a file for writing */
$fp = fopen("myputfile.ext", "w");

/* Read the data 1 KB at a time
   and write to the file */
while ($data = fread($putdata, 1024))
  fwrite($fp, $data);

/* Close the streams */
fclose($fp);
fclose($putdata);
?>

Ответы [ 2 ]

0 голосов
/ 03 октября 2010
{file: filename}

Когда вы загружаете файл, вы должны загрузить файл.Сказать серверу, что такое локальное имя файла… недостаточно.

JavaScript, работающий в веб-браузере в стандартном контексте безопасности, не имеет доступа для чтения данных в файле с жесткого диска пользователя..

Поскольку вы не можете получить данные, вы не можете загрузить их.

0 голосов
/ 03 октября 2010

Специально для вашего решения, главным образом потому, что метод PUT (глагол) поддерживается не всеми браузерами, особенно более старыми, поэтому это решение не будет работать для всех.

Темаранее также упоминалось , но не совсем так, некоторые ответы являются примерами того, где PUT и DELETE не работают.

Документация для $.ajax() упоминаетэто также :

type
По умолчанию: 'GET'
Тип запроса («POST» или «GET»),по умолчанию "GET".

Примечание: Другие методы HTTP-запросов, такие как PUT и DELETE, также могут использоваться здесь, но они поддерживаются не всеми браузерами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...