2013-02-06 127 views
0

我有什么动态变化:我使用uploadify上传企业内部网应用程序,我写的文件文件上传插件位于Web根目录忽略到目标文件夹

我需要将文件上传到属于一个用户(动态创建的目录)的目录。

我显然是不正确的解决方案:)

在我的任何用户登录后他创建一个文件夹(标题为USER_ID)。

现在uploadify.php看起来像这样:

session_name("test_tool_cookie"); 
    session_start(); 
    $targetFolder = '/test_tool/app/webroot/uploadify/' . $_SESSION['Auth']['User']['user_id']; //Relative to the root 
    //the 3 lines above are my only change to the script 
//$targetFolder = '/test_tool/app/webroot/uploadify/tmpFile'; //this was here before my changes 

    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('html' , 'docx', 'pdf', 'xls', 'xlsx', 'txt'); // 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.'; 
     } 
    } 

的问题

  • 以上脚本将无法上传文件到文件夹(检查和 不会上传该文件在其他地方)。

  • 如果我改变$的TargetFile静态值,它工作正常。

  • 会话值是正确的(但忽略)

还有什么可以赚取回答问题

,如果你认为一个好的multiupload插件(与我会将您的问题作为一个答案简单的描述),它很容易与Cake Cake集成,并且可以自定义,因此数据库中的每个对象都可以拥有自己的文件夹。

请想想你的答案,对于这个问题的任何解决方案将有很大的帮助。

+0

是否'$ _SESSION [ '验证'] [ '用户'] [ 'USER_ID']'抱一个字符串值如果你的用户登录?执行'$ _SERVER ['DOCUMENT_ROOT']。 $ targetFolder'存在并且是可写的?如果您创建了该文件夹,那么您的Web用户的父文件夹是否可写? –

+0

使用is_writable方法检查它,返回1.检查会话,它包含一个数字(php是类型不敏感的,正确的)? http://php.net/manual/en/function.is-writable.php –

+0

用is_string检查SESSION,并返回1 –

回答

1

你有没有尝试与您的表单数据发送会话名称像的例子here

0

你应该检查什么$_SERVER['DOCUMENT_ROOT']回报。

因为如果它返回,可以说/home/your_username/public_html/test_tool/app/webroot,我相信这是发生了什么,并且您正在添加/test_tool/app/webroot/uploadify/,您将永远不会获取要上载的文件。

从我的角度来看,你应该做到以下几点,离开一切的是:

// As long as $_SESSION['Auth']['User']['user_id'] has a value, it should work. If not, statically place a number there like /uploadify/1 to see if it works 
$targetFolder = '/uploadify/' . $_SESSION['Auth']['User']['user_id']; //Relative to the root 
+0

当我静态地尝试它时,它工作正常,所以我想这个问题将与会议阅读(这在另一个。在这个文件夹中的PHP文件返回一个正确的值)。 我在周三没有尝试lp1051的链接建议,今天它没有真正的工作,将很快编辑我的问题。 –

相关问题