上传代码点火器htaccess只是不工作


Upload codeigniter htaccess just not working

我创建了与CI用户指南完全相同的副本,甚至更改了
$this->upload->do_upload("name_of_file_input");我试过两种

./data/
./application/data/

作为我的文件夹上传,CHMOD 0777,仍然上传不起作用
我启动了FF和FireBug来查看我从本地主机发送/获得的头,我认为问题可能在.htaccess文件中,但不太确定。。。
我在子文件夹localhost/something/ (or http://192.168.0.101/sms/)
上工作我的routes.php应该很好,没有404或任何其他问题,除了上传脚本

同样奇怪的是,我必须制作这样的表格

<?=form_open_multipart("/sms/upload/do_upload")?>

它创建了这个

<form action="http://localhost/sms/sms/upload/do_upload" method="post" accept-charset="utf-8" enctype="multipart/form-data">

注意双sms/sms/这显然是错误的,但我的htaccess重定向正确,正如你在这里看到的

HTTP/1.1 301 Moved Permanently
Date: Tue, 28 Aug 2012 01:49:47 GMT
Server: Apache/2.4.2 (Win32) OpenSSL/1.0.1c PHP/5.4.4
Location: http://192.168.0.101/sms/upload
Content-Length: 337
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/html; charset=iso-8859-1

如果我创建这样的表单

<?=form_open_multipart("/upload/do_upload")?>

它给我带来了一个错误,当然是

HTTP/1.1 301 Moved Permanently
Date: Tue, 28 Aug 2012 01:52:43 GMT
Server: Apache/2.4.2 (Win32) OpenSSL/1.0.1c PHP/5.4.4
Location: http://192.168.0.101/upload/do_upload

且明显http://192.168.0.101/upload在我的本地主机上不存在,我的整个安装都在子文件夹/sms/

下我的.htaccess

<IfModule mod_rewrite.c>
# mod_rewrite rules
RewriteEngine on
# The RewriteBase of the system (if you are using this sytem in a sub-folder).
 RewriteBase /sms/
# This will make the site only accessible without the "www."
# (which will keep the subdomain-sensive config file happy)
# If you want the site to be accessed WITH the "www."
# comment-out the following two lines.
 RewriteCond %{HTTP_HOST} !^192.168.0.101$ [NC]
 RewriteRule ^(.*)$ http://192.168.0.101/$1 [L,R=301]
# If a controler can't be found - then issue a 404 error from PHP
# Error messages (via the "error" plugin)
# ErrorDocument 403 /index.php/403/
# ErrorDocument 404 /index.php/404/
# ErrorDocument 500 /index.php/500/
# Deny any people (or bots) from the following sites: (to stop spam comments)
# RewriteCond %{HTTP_REFERER} nienschanz'.ru [NC,OR]
# RewriteCond %{HTTP_REFERER} porn'.com
# RewriteRule .* - [F]
# Note: if you are having trouble from a certain URL just
# add it above to forbide all visitors from that site.
# You can also uncomment this if you know the IP:
# Deny from 192.168.1.1
# If the file is NOT the index.php file
RewriteCond %{REQUEST_FILENAME} !index.php
# Hide all PHP files so none can be accessed by HTTP
RewriteRule (.*)'.php$ index.php/$1
# If the file/dir is NOT real go to index
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [QSA,L]
</IfModule>
# If Mod_ewrite is NOT installed go to index.php
<IfModule !mod_rewrite.c>
ErrorDocument 404 index.php
</IfModule>
#<ifModule mod_expires.c>
#  <filesmatch "'.(ico|flv|jpg|jpeg|png|gif|js|css|swf)$">
#       ExpiresActive on
#       ExpiresDefault "access plus 1 year"
#   </filesmatch>
#</ifModule>
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/xhtml text/html text/plain text/xml
text/javascript application/x-javascript text/css
</IfModule>
FileTag none

新信息:

似乎在点击"上传"按钮后,它被重定向到"某个地方"(带有"附加"的数据),并从"某个位置"重定向到我的实际上传脚本,该脚本完成了所有工作(没有"附加"数据),因此我认为这是.htaccess的问题。CI抛出此错误

您没有选择要上载的文件。

<?php
class Upload extends CI_Controller {
function __construct()
{
    parent::__construct();
    $this->load->helper(array('form', 'url'));
}
function index()
{
    $this->load->view('upload_form', array('error' => ' ' ));
}
function do_upload()
{
    $config['upload_path'] = './data/';
    //$config['allowed_types'] = 'gif|jpg|png';
    //$config['max_size']   = '100';
    //$config['max_width']  = '1024';
    //$config['max_height']  = '768';
    //$config['file_name'] = $_FILES['userfile']['name'];
    $this->load->library('upload', $config);
    if ( ! $this->upload->do_upload("userfile"))
    {
        $error = array('error' => $this->upload->display_errors());
        $this->load->view('upload_form', $error);
    }
    else
    {
        $data = array('upload_data' => $this->upload->data());
        $this->load->view('upload_success', $data);
    }
   }
  }
 ?>

它是链接在上的CI指南I的副本

finally:)问题出现在相对/绝对路径中,或者实际上是我的CodeIgniter设置中,在我的config.php 中有这一行

$config['base_url'] = 'http://localhost/sms/';

这一切都很好,但在我的.htaccess文件中没有提到localhost(有IP)。

整个问题通过在配置文件和.htaccess文件

中放置相同的"路径"来解决

为什么不使用相对链接?(删除初始斜线"/")

您为上传文件创建了目标文件夹并更改了权限?

尝试删除RewriteBase/sms/

如果您希望url相同,请更改apache配置文件中的documentRoot

希望这能帮助到你。如果没有,请从代码中添加更多内容。