【问题标题】:HTML/PHP/JS Select multiple file and upload via FTPHTML/PHP/JS 选择多个文件并通过 FTP 上传
【发布时间】:2012-03-21 10:17:36
【问题描述】:

嗨,我需要将一系列文件上传到服务器(特别是一组图像)。 我需要一个文件输入来选择多个文件(也在 IE 中),我没有权限直接在服务器上使用 PHP 编写(权限是 775,但 FTP 和 apache 用户属于 2 个不同的组)所以我需要使用 FTP连接(我已经能够使用单个文件执行此操作)。 如果有办法做到这一点,有人可以建议我吗? 提前致谢

米歇尔

编辑:我正在尝试按照 Nick 的建议使用 uploadify。

 <script type="text/javascript">
    $(document).ready(function() {
        $('#file_upload').uploadify({
            'uploader'  : 'JS/uploadify.swf',
            'script'    : 'upload.php',
            'cancelImg' : 'JS/cancel.png',
            'folder'    : 'TEST/UPLOADS',
            'auto'      : true,
            'multiple'  : true,
            'removeCompleted' : false,
            'queueSizeLimit' : 3,
            'queueID' : 'queue',
            'simUploadLimit' : 1
         );
    });
</script>

我试着把ftp连接和ftp_put放到upload.php中是不是?? 如果我尝试按照文档的建议添加“scriptData”参数,$_POST[] 无法访问它,为什么?

这里是我的测试链接:test

测试显示文件已上传,但服务器文件夹中没有文件。

这是我的upload.php代码:

if (!empty($_FILES)) {
    $tempFile = $_FILES['Filedata']['tmp_name'];                          // 1

    //$targetPath = $_SERVER['DOCUMENT_ROOT'] . $_REQUEST['folder'] . '/';  // 2
    //$targetFile =  str_replace('//','/',$targetPath) . $_FILES['Filedata']['name']; // 3


    $ftp_server = "***";  //address of ftp server.
    $ftp_user_name = "***"; // Username
    $ftp_user_pass = "***";   // Password
    $conn_id = ftp_connect($ftp_server);
    ftp_login($conn_id, $ftp_user_name, $ftp_user_pass); 
    ftp_pasv ( $conn_id, true );

    if( ftp_fput($conn_id, 'TEST/' . $_FILES['Filedata']['name'], $tempFile, FTP_BINARY)){                       // 4
        echo true;
    }else{
        echo false;
    }

    ftp_close($conn_id);
} else {
    echo false;
}

【问题讨论】:

    标签: php javascript jquery ftp


    【解决方案1】:

    为了允许上传多个文件,我通常使用uploadify 它的文档相当不错,而且使用起来也很简单。

    您需要使用类似的东西来保持连接打开并在不重新加载页面的情况下发送文件。

    编辑:

    你的代码应该是这样的:

    <script type="text/javascript">
    $(function() {
        $('#custom_file_upload').uploadify({
            'uploader'       : 'JS/uploadify.swf',
            'script'         : 'JS/uploadify.php',
            'cancelImage'      : 'JS/uploadify-cancel.png',
            'multi'          : true,
            'auto'           : true,
            'fileTypeExts'        : '*.jpg',
            'fileTypeDesc'       : 'Image Files (.JPG)',
            'queueID'        : 'custom-queue',
            'queueSizeLimit' : 3,
            'simUploadLimit' : 3,
            'sizeLimit'   : 10240000,
            'removeCompleted': false,
            'onDialogClose'   : function(queue) {
                $('#status-message').text(queue.filesQueued + ' files have been added to the queue.');
            },
            'onQueueComplete'  : function(stats) {
                $('#status-message').text(stats.successful_uploads + ' files uploaded, ' + stats.upload_errors + ' errors.');
            }
        });             
    });
    </script>
    

    swf 更改为 uploaderuploader 更改为 script

    【讨论】:

    • 感谢您的回答!我正在尝试使用它,但我对演示和文档中使用的版本感到困惑:S 还有关于尝试传递 scriptData 参数......你有一个工作示例吗?或者我可以发布我的代码...
    • 如果我按照您的建议进行更改,按钮将不起作用...您可以在此处查看我的测试页面:link
    • test 表示上传完成但文件夹中没有文件
    • 您似乎拥有cancelImage、脚本和上传器的完整路径。这只需要是一个 URL(并且可以是相对的)。你的当前是 /app02/httpd/html/10001_1001_www.wpr.it_01/html/ADMIN/... 将其更改为 /ADMIN/... 并且它看起来对我有用(虽然我无法检查图像实际上是否正确上传,但它们正在正确传递给脚本)。
    猜你喜欢
    • 1970-01-01
    • 2017-07-13
    • 2011-05-19
    • 2011-06-11
    • 1970-01-01
    • 1970-01-01
    • 2012-04-26
    相关资源
    最近更新 更多