Скрипт Uploadify без ошибок, но и без загрузки - PullRequest
0 голосов
/ 05 ноября 2011

Я использую uploadify, и моя проблема в том, что файлы не загружаются.

Это мой код:

На uploadify.php я установил корневой путь: /

Примерно так:

$targetFolder = '/'; // Relative to the root

Затем все остальное в сценарии:

<script type="text/javascript">
jQuery(document).ready(function() {


     $('#file_upload').uploadify({
        'uploader'    : '/myIncludes/UploadiftyFolder/uploadify.php',
        'swf'  : '/myIncludes/UploadiftyFolder/uploadify.swf',
        'cancelImg' : '/myIncludes/UploadiftyFolder/cancel.png',
        'folder'    : '/myUploads/UploadsDirectory/images/',
        'auto'      : true,
        'multi'         : false,
        'checkExisting' : false
      });
});
</script>

//Finally 

<input id="file_upload" type="file" name="Filedata" />
<a href="javascript:$('#file_upload').uploadifyUpload();">Upload Files</a>

Когда я пытаюсь загрузить изображение, все работает хорошо (кажется, тоже), и этоговорит - Завершено ...

Но ничего не загружается.

Есть идеи?

ОБНОВЛЕНИЕ:

Вот мои пути к структуре сервера:

Мои пути:

root/myIncludes/UploadiftyFolder/  <--Here are all the uploadify files

root/myUploads/UploadsDirectory/images/  <--Here is where I need to upload

Вот мои текущие настройки для uploadify:

folder -->  '/myUploads/UploadsDirectory/images/',

and in uploadify.php --> $targetFolder = '/'; // Relative to the root

Вот остальные файлы uploadify.php ... У меня неттам что-то изменилось:

if (!empty($_FILES)) {
    $tempFile = $_FILES['Filedata']['tmp_name'];
    $targetPath = $_SERVER['DOCUMENT_ROOT'] . $targetFolder;
    $targetFile = rtrim($targetPath,'/') . $_FILES['Filedata']['name'];

    // Validate the file type
    $fileTypes = array('jpg','jpeg','gif','png'); // File extensions
    $fileParts = pathinfo($_FILES['Filedata']['name']);

    if (in_array($fileParts['extension'],$fileTypes)) {
        move_uploaded_file($tempFile,$targetFile);
        echo '1';
    } else {
        echo 'Invalid file type.';
    }
}

Ответы [ 4 ]

4 голосов
/ 27 апреля 2012

Для меня проблема была в файле uploadify.php.Они используют:

$tempFile = $_FILES['Filedata']['tmp_name'];
$targetPath = $_SERVER['DOCUMENT_ROOT'] . $targetFolder;
$targetFile = rtrim($targetPath,'/') . '/' . $_FILES['Filedata']['name'];

$targetFolder определяется вами вверху.

, а затем позже:

move_uploaded_file($tempFile,$targetFile);

В примере по умолчанию добавляется целевая папкадо конца $_SERVER['DOCUMENT_ROOT'].Мой $_SERVER['DOCUMENT_ROOT'] был на самом деле C:\xampp\htdocs.Итак, чтобы заставить его работать, ваша целевая папка должна быть:

$targetFolder = "/yourSiteFolder/wherever/your/upload/folder/is";

Что я сделал:

Избавился от $_SERVER['DOCUMENT_ROOT'] в целом.Вот мой uploadify.php файл:

<?php
/*
Uploadify v3.1.0
Copyright (c) 2012 Reactive Apps, Ronnie Garcia
Released under the MIT License <http://www.opensource.org/licenses/mit-license.php> 
*/

// Define a destination
//$targetFolder = '/sandbox/uploads'; // Relative to the root

if (!empty($_FILES)) {
    //$tempFile = $_FILES['Filedata']['tmp_name'];
    //$targetPath = $_SERVER['DOCUMENT_ROOT'] . $targetFolder;
    //$targetFile = rtrim($targetPath,'/') . '/' . $_FILES['Filedata']['name'];

    // Validate the file type
    $fileTypes = array('jpg','jpeg','gif','png'); // File extensions
    $fileParts = pathinfo($_FILES['Filedata']['name']);

    if (in_array($fileParts['extension'],$fileTypes)) {
        move_uploaded_file($_FILES["Filedata"]["tmp_name"], "uploads/" . $_FILES["Filedata"]["name"]);
        echo '1';
    } else {
        echo 'Invalid file type.';
    }
}
?>

Основное изменение в том, что я заменил это:

move_uploaded_file($tempFile,$targetFile);

на это:

move_uploaded_file($_FILES["Filedata"]["tmp_name"], "uploads/" . $_FILES["Filedata"]["name"]);

Изатем закомментировал несколько строк, которые больше не нужны.

И это мой check-exists.php файл:

<?php
/*
Uploadify v3.1.0
Copyright (c) 2012 Reactive Apps, Ronnie Garcia
Released under the MIT License <http://www.opensource.org/licenses/mit-license.php> 
*/

// Define a destination
//$targetFolder = 'uploads'; // Relative to the root and should match the upload folder     in the uploader script

if (file_exists("uploads/" . $_POST['filename'])) {
    echo 1;
} else {
    echo 0;
}
?>

А это мой код jquery:

$(function() {
    $("#uploadify").uploadify({
        height        : 30,
        swf           : 'uploadify/uploadify.swf',
        uploader      : 'uploadify/uploadify.php',
        width         : 120
    });
});

Примечание о файловой структуре моего сайта:

Все файлы загрузки находятся в корне моего сайта в папке с именем uploadifyuploadify находится папка с именем uploads, в которую загружаются файлы.

Надеюсь, это поможет.

2 голосов
/ 10 мая 2013

Я попробовал все остальные предложения здесь, но ни одно из них не помогло мне. Затем я понял, что версия 3.2 Uploadify (и, возможно, и предыдущие версии) требует метки времени и хешированного токена для завершения загрузки.

Прежде всего, мне пришлось переместить скрипт из внешнего JS-файла в мой PHP-файл, чтобы я мог получить метку времени из PHP. (Вы также можете сделать это с помощью скрытого входного значения или другого метода, но это был самый простой способ.) Затем мне пришлось добавить опцию 'formData' в мой вызов Uploadify вместе с некоторым PHP-кодом, который получает временная метка и хэширует ее с помощью уникальной соли (которую следует заменить на случайную строку):

<?php $timestamp = time();?>
<script>
$('#file_upload').uploadify({
    'swf'      : '/uploadify/uploadify.swf',
    'uploader' : '/uploadify/uploadify.php',
    'formData' : {
        'timestamp' : '<?php echo $timestamp;?>',
        'token'     : '<?php echo md5("unique_salt" . $timestamp);?>'
    }
});
</script>

Хотя этот код, по-видимому, необходим в версии 3.2, он не упоминается в документации . Мне нужно было найти файл index.php, входящий в пакет загрузки, чтобы найти его.

1 голос
/ 29 апреля 2012

Для меня все, что мне нужно было сделать, это избавиться от $ _SERVER ['DOCUMENT_ROOT'] в определении $ targetPath. И затем я также использовал «uploads» вместо «/ uploads» в качестве моего $ targetFolder.

1 голос
/ 05 ноября 2011

Попробуйте дать "~ /" перед загрузкой папки

(или) вот весь сценарий:

<script type="text/javascript">
    $(window).load(
function () {
    $("#fileInput1").uploadify({
        'uploader': 'scripts/uploadify.swf',
        'cancelImg': 'images/cancel.png',
        'buttonText': 'Browse Files',
        'script': 'UploadVB.ashx',
        'folder': 'uploads',
        'fileDesc': 'Image Files',
        'fileExt': '*.jpg;*.jpeg;*.gif;*.png',
        'queueSizeLimit': 9999,
        'simUploadLimit': 2,
        'sizeLimit': 4000000,
        'multi': true,
        'auto': true,
        'onComplete': function (event, queueID, fileObj, response, data) {
                        $("#thumbnail").append(response)

        },

        'onError': function (event, ID, fileObj, errorObj) {
            alert(errorObj.type + ' Error: ' + errorObj.info);
        }


    });
}
);
</script>
...