Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/402.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 上传文件夹_Php_Javascript_Codeigniter_Upload_Uploadify - Fatal编程技术网

Php 上传文件夹

Php 上传文件夹,php,javascript,codeigniter,upload,uploadify,Php,Javascript,Codeigniter,Upload,Uploadify,我使用Uploadify上传文件,并使用Codeigniter框架 这是我的上传代码: $("#change_profile_icon").uploadify({ 'uploader' : '/project/style/scripts/crop/uploadify/uploadify.swf', 'script' : 'http://localhost/project/pages/pr

我使用Uploadify上传文件,并使用Codeigniter框架

这是我的上传代码:

$("#change_profile_icon").uploadify({

                    'uploader'       : '/project/style/scripts/crop/uploadify/uploadify.swf',
                    'script'         : 'http://localhost/project/pages/profile_icon',
                    'cancelImg'      : '/project/style/scripts/crop/uploadify/cancel.png',
                    'buttonText'     :'Upload image',
                    'width'          : '110',
                    'height'         : '30',
                    'queueID'        : 'fileQueue',
                    'auto'           : true,
                    'scriptData'     :{username :"<?php echo $this->session->userdata('username');?>",folder:"honda"},
                    'queueSizeLimit' : 1,
                    'multi'          : false,
                    'fileDesc'       : 'jpg',
                    'fileExt'        : '*.jpg;*.png',
                    'sizeLimit'      : '819200',//max size bytes - 800kb
                    'onComplete'     : function(event,queueID,fileObj,response,data) {
                                            alert("Completed");
                                            var dataresponse = eval('(' + response + ')');
                                            //$('#uploadifyUploader').remove();
                                        var filenametmp = "http://localhost"+(dataresponse.file).substring(0,(dataresponse.file).lastIndexOf("?"));
                                        var current_page = $('#page-list').val();

                                        },

                                        'onSelect' : function (){
                                        var folder =  $('#page-list option:selected').text(); //returns HONDA which is correct
$('#change_profile_icon').uploadifySettings('folder',folder);
}   ,           
                    'onError'        : function(){
                                            alert('error');
                                       }
                });
问题:

$targetPath = 'uploads/' .$_REQUEST['folder']. '/';
            $targetFile = $targetPath.$_FILES['Filedata']['name'];
            if (!file_exists($targetPath))
            {
             mkdir(str_replace('//','/',$targetPath), 0755, true);
            }
检查上面PHP部分的代码。我认为$_REQUEST['folder']将给出上传脚本上指定的文件夹名称。folder的值为 但这给了我们一些不同的东西

我上传了一个文件,这个脚本将它上传到

C:\wamp\www\project\uploads\project\home\editpage\honda\honda
在wamp服务器上[我在本地主机中]

但是它是怎么来的??应该是

 C:\wamp\www\project\uploads\honda
检查下面的

  $targetPath = 'uploads/' .$_REQUEST['folder']. '/';
  $targetFile = $targetPath.$_FILES['Filedata']['name'];
targetPath现在应该是uploads/honda/ 现在应该上传targetFile/honda/fileName.ext

我不知道我做错了什么,错在哪里

请帮帮我

多谢各位

编辑:当前页面的URL结构:http://localhost/Project/home/editpage/honda/ 其中home是控制器,editpage是函数,honda是参数。[Codeigniter framework]


我解决了这个问题,这是uploadify中的一个bug:uploadify folder变量不是直接的,所以我们应该在它之前添加一个斜杠

所以它将是var folder=/+FolderName;
问题是,如果只使用文件夹名,就无法返回服务器上的数据。

我认为,将输出放入文件中会得到很多帮助:

$myFile = "[full-folder-path]testFile.txt";
$fh = fopen($myFile, 'a') or die("can't open file");
$stringData = $_FILES['Filedata']['name'] ." | ". print_r( $_REQUEST, true ) ."\n";
fwrite($fh, $stringData);
fclose($fh);
但我想如果你把$targetPath改成这个

$targetPath = $_SERVER['DOCUMENT_ROOT'] . $_REQUEST['folder'] . '/';
请记住,您的文件夹需要读取/wirte rulls,这是我能从您的基本脚本到我的脚本中看到的唯一内容。

只需在设置中提供您要上载的文件夹即可

<script type="text/javascript">
$(document).ready(function() {
  $('#file_upload').uploadify({
    'uploader'  : '/uploadify/uploadify.swf',
    'script'    : '/uploadify/uploadify.php',
    'cancelImg' : '/uploadify/cancel.png',
    'folder'    : '/uploads',
    'auto'      : true
  });
});
</script>

在上面的设置中,您遗漏了文件夹选项。

我解决了这个问题,这是uploadify中的一个错误:uploadify folder变量不是直接的,因此我们应该在它之前添加一个斜杠


所以它将是var folder=/+FolderName;问题是,如果只使用文件夹名称,则无法返回服务器上的数据。

onSelect::函数{var Folder=$'页面列表选项:selected'。text;//返回正确的数据$'change\u profile\u icon'。uploadifySettings'Folder',Folder;}OnSelect事件是指当您尝试从本地文件夹中选择图像,但当您尝试上载到服务器时,其结果不同。是的,您是对的,但您在哪里提到了要上载的文件夹名称?您只是提到了它,但您在何处作为Honda提供了它,您需要将其指定为“文件夹”:“/Honda”,我解决了它,这是一个错误。实际需要在文件夹之前放置\什么??我们正在处理后端脚本上的文件夹。因此uploadify负责以直接方式发送此信息:如果没有斜杠,它会将错误信息发送到服务器,如果不可能,它们可能会抛出一些错误。请澄清您的第一个块?移动上传的文件对我很有帮助。。。。。
$targetPath = $_SERVER['DOCUMENT_ROOT'] . $_REQUEST['folder'] . '/';
<script type="text/javascript">
$(document).ready(function() {
  $('#file_upload').uploadify({
    'uploader'  : '/uploadify/uploadify.swf',
    'script'    : '/uploadify/uploadify.php',
    'cancelImg' : '/uploadify/cancel.png',
    'folder'    : '/uploads',
    'auto'      : true
  });
});
</script>