上传照片到服务器/ 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!');
}
谢谢。这个答案适合我。我没有意识到文件名称随着$ _FILES数组而改变。我没有足够的代表积分,但我已经接受了你的回答(我的代表一旦我的代表人数超过15人,我就会回复upvote)。我会这样说:编程是谦逊! – quicksand