上传照片到服务器/ rackspace cloudfiles - php/codeigniter

上传照片到服务器/ rackspace cloudfiles - php/codeigniter

问题描述:

我正在上传照片从我的电脑到服务器,使用repository。当我尝试上传一个文件名为mylogo.jpg,我得到一个错误,指出:上传照片到服务器/ rackspace cloudfiles - php/codeigniter

可以为阅读无法打开文件:/tmp/php0d4X5Ny/mylogo.jpg

我需要找出原因我收到这个错误。

下面是来自控制器(cloudfiles.php)我的代码:

 public function add_local_file() 
     { 
       $file_location = $_FILES['userfile']['tmp_name'].'/'; 
       $file_name = $_FILES['userfile']['name']; 

       $this->cfiles->do_object('a', $file_name, $file_location); 

       $this->_show_errors('Image Added!'); 
     } 

do_object function is here(线151)。这里是上传视图

<?php echo form_open_multipart('cloudfiles/add_local_file'); ?> 

<input type="file" name="userfile" size="20" /> 

<input type="submit" value="upload" /> 

<?php echo form_close(); ?> 

我搜索cloudfiles库,发现“无法打开文件进行读取”错误是在此函数的异常:

function load_from_filename($filename, $verify=true) 
    { 
     $fp = @fopen($filename, "r"); 
     if (!$fp) { 
      throw new IOException("Could not open file for reading: ".$filename); 
     } 

     clearstatcache(); 

     $size = (float) sprintf("%u", filesize($filename)); 
     if ($size > MAX_OBJECT_SIZE) { 
      throw new SyntaxException("File size exceeds maximum object size."); 
     } 

     $this->_guess_content_type($filename); 

     $this->write($fp, $size, $verify); 
     fclose($fp); 
     return True; 
    } 

我我一直在看这几个小时,不能看到有什么问题。顺便说一句,没有看到任何PHP错误,只是上面提到的一个错误。新的堆栈溢出(频繁的浏览器,新帐户),所以提前感谢您的帮助。

我不认为你明白$_FILES阵列是如何工作的。上传文件后,它位于$_FILES['userfile']['tmp_name'],并且没有原始名称。

如果你想用它上传文件的原始名称,你需要做这样的事情:

public function add_local_file() 
{ 
    $file_location = '/tmp/'; 
    $file_name  = $_FILES['userfile']['name']; 

    if(move_uploaded_file($_FILES['userfile']['tmp_name'], $file_location . $file_name)){ 

     $this->cfiles->do_object('a', $file_name, $file_location); 

    } 

    $this->_show_errors('Image Added!'); 
} 
+1

谢谢。这个答案适合我。我没有意识到文件名称随着$ _FILES数组而改变。我没有足够的代表积分,但我已经接受了你的回答(我的代表一旦我的代表人数超过15人,我就会回复upvote)。我会这样说:编程是谦逊! – quicksand