Загрузка файла в ownCloud через PHP и HTML форму

У меня возникли некоторые проблемы, пытаясь разработать веб-приложение для загрузки файлов на мой сервер owncloud через форму с помощью PHP, я использую curl, чтобы поместить запрос через webDav, так что вот код:

Указатель.РНР

<html>
        <head>
            <title>Theform is here</title>
        </head>
        <body>
            <div align="center">
                <h1> File uploads with OwnCloud API</h1>
                <form method="post" action="uploader.php" name="fileuploader">
                    <label>Select a File to upload</label><br>
                    <input type="file" name="file"></input><br>
                    <input type="submit" value="upload file"></input>
                </form>
                <?php
                ?>
            </div>
        </body>
    </html>

загрузчик.РНР

<?php
    $request = curl_init('http://mydomain.cl/owncloud/remote.php/webdav/Dev/');

    curl_setopt($request,CURLOPT_POST,true);
    curl_setopt($request,CURLOPT_HTTPHEADER,'Authorization: Basic');
    curl_setopt($request, CURLOPT_USERPWD, "user:password");
    curl_setopt($request, CURLOPT_PUT, 1);
    curl_setopt(
        $request,
        CURLOPT_INFILE,
        array(
            'thefile'=>
                        '@'            .$_FILES['file']['tmp_name']
                        . ';filename=' .$_FILES['file']['daName']
                        . ';type='     .$_FILES['file']['type']

        ));
    curl_setopt($request, CURLOPT_INFILE, $_FILES['file']);
    curl_setopt($request, CURLOPT_INFILESIZE, filesize($_FILES['file']));


    // output the response
    curl_setopt($request, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($request, CURLOPT_BINARYTRANSFER, TRUE); 
    echo curl_exec($request);

    // close the session
    curl_close($request);

?>

Когда я пытаюсь загрузить файл, я получаю этот ответ:

SabreDAVExceptionNotAuthenticated no’ Authorization: Basic ‘ заголовок
найдено. Либо клиент не отправил его, либо сервер
неправильно настроенный

Но когда я использую owncloud Client, у меня нет проблем с доступом к файлам.

EDIT: исправлено имя переменной $ch в $request и добавлена строка :

curl_setopt ($request, CURLOPT_HTTPHEADER, ‘Authorization: Basic’);

от @Craig post, после этого я получил это сообщение об ошибке:

SabreDAVExceptionConflict PUT не допускается для не файлов.

Пожалуйста, помогите мне решить эту проблему. С Уважением: D

2 ответа

  1. Включите это в параметры curl:

    CURLOPT_HTTPHEADER => array('Authorization: Basic');
    

    или использовать существующую конвенцию:

    curl_setopt($ch, CURLOPT_HTTPHEADER, 'Authorization: Basic');
    
  2. Наконец, чтобы управлять моими файлами через owncloud, я должен был указать форму на directorory на веб-сервере, а затем использовал плагин owncloud для подключения внешних источников хранения и работает довольно хорошо для меня.

    Конфигурация Внешнего Хранилища