用户
 找回密码
 入住 CI 中国社区
搜索
查看: 2369|回复: 9
收起左侧

[上传/下载] 文件上传失败!急!!!

[复制链接]
发表于 2017-3-30 00:02:35 | 显示全部楼层 |阅读模式
本帖最后由 liaow10 于 2017-3-30 00:07 编辑

看了论坛里面的帖子,看了手册,发现大多数人上传文件失败都是因为 name 的问题,但是我基本上是直接拿手册上面的源码放进去了,对比了name也没问题,但是$_FILES的值一直都是空。我使用网页的方式上传就是空的,我自己用postman测试就能检测到,求助!急求!!!!

controllers/Welcome.php

22     public function index()
23     {
24         $this->load->helper('url');
25         $this->load->helper('form');
26         $this->load->view('hehe');
27     }
28
29     public function do_upload()
30     {
31         print_r($_FILES);
32         $this->load->library('upload');
33         if (!$this->upload->do_upload('userfile'))
34         {
35             echo $this->upload->display_errors();
36         }
37         else
38         {
39             print_r($this->upload->data());
40         }
41     }


views/hehe.php

  1 <html>
  2 <head>
  3 <title>Upload Form</title>
  4 </head>
  5 <body>
  6
  7
  8 <?php echo form_open_multipart('welcome/do_upload');?>
  9
10 <input type="file" name="userfile" size="20" />
11
12 <br /><br />
13
14 <input type="submit" value="upload" />
15
16 </form>
17
18 </body>
19 </html>

config/upload.php
  1 <?php
  2 defined('BASEPATH') OR exit('No direct script access allowed');
  3
  4 $config['upload_path'] = UPLOAD_FILE_PATH;
  5 $config['allowed_types'] = '7z';
  6 $config['overwrite'] = FALSE;
  7 // $config['max_size'] = 0;



真的不明白为什么?求问!项目一直卡在这里,很焦急!!!

谢谢!下面是附图:

页面点上传前:
11.png

页面点击上传后:
12.png

使用postman的结果:
13.png

postman的详细code:
14.png


发表于 2017-3-30 10:32:55 | 显示全部楼层
你完全可以不用 <?php echo form_open_multipart('welcome/do_upload');?>     把他换成<form action="'welcome/do_upload" method="post" enctype="multipart/form-data">   试试
发表于 2017-3-30 10:37:18 | 显示全部楼层
你要想用<?php echo form_open_multipart('welcome/do_upload');?>    在autoload.php 自动载入 $autoload['helper'] = array('form');
发表于 2017-3-30 10:49:35 | 显示全部楼层
$_FILES 里是空的话,那你要看看你的 HTML 是不是写对了,只要是浏览器正确提交上传,$_FILES 不可能为空。
 楼主| 发表于 2017-3-30 10:57:21 | 显示全部楼层
phillu 发表于 2017-3-30 10:32
你完全可以不用      把他换成   试试

感谢!!!按照你说的换成下面这种就可以上传了,还需要看下原因,因为这个代码毕竟只是测试代码,我这边项目的正式代码有问题,才按照手册的代码写来测试的。

  1 <html>
  2 <head>
  3 <title>Upload Form</title>
  4 </head>
  5 <body>
  6
  7 <form action="index.php/welcome/do_upload" method="post" enctype="multipart/form-data">
  8
  9 <input type="file" name="userfile" size="20" />
10
11 <br /><br />
12
13 <input type="submit" value="upload" />
14
15 </form>
16
17 </body>
18 </html>
 楼主| 发表于 2017-3-30 10:58:03 | 显示全部楼层
phillu 发表于 2017-3-30 10:37
你要想用    在autoload.php 自动载入 $autoload['helper'] = array('form');

是载入helper的问题吗,我在构造的时候加上也没问题吧?
 楼主| 发表于 2017-3-30 10:59:41 | 显示全部楼层
Hex 发表于 2017-3-30 10:49
$_FILES 里是空的话,那你要看看你的 HTML 是不是写对了,只要是浏览器正确提交上传,$_FILES 不可能为空。 ...

按照一楼的方法已经调通CI的手册代码了,但是不明白原因,手册上面的代码怎么不能直接运行成功。$_FILES 为空就肯定是浏览器没有正确上传是吗?浏览器上传是否一定需要设置 enctype="multipart/form-data"
发表于 2017-3-30 11:20:13 | 显示全部楼层
liaow10 发表于 2017-3-30 10:58
是载入helper的问题吗,我在构造的时候加上也没问题吧?

对呀  你载入 helper   form 有问题 你直接放在浏览器了  访问应该会报错的   
 楼主| 发表于 2017-3-30 14:30:58 | 显示全部楼层
Hex 发表于 2017-3-30 10:49
$_FILES 里是空的话,那你要看看你的 HTML 是不是写对了,只要是浏览器正确提交上传,$_FILES 不可能为空。 ...

还是有问题,小文件可以,笔记几百K的文件就行,几十兆的就提示$_FILES是空的
发表于 2017-3-30 16:29:28 | 显示全部楼层
或许是你文件大小的问题呢   apache也有默认上传文件大小的上限啊,虽然我没用过form那个helper,但是我觉得。。。几十兆一定超了。。。

本版积分规则