【发布时间】:2017-03-07 10:13:50
【问题描述】:
我正在使用 codeigniter 3.1 。我想使用 ajax 发布上传数据。
Ajax 上传文件不工作。但是当我发布没有 ajax 的简单表单时,它工作正常。
我不知道为什么,但控制台没有错误。
HTML
<?php echo form_open_multipart(site_url("upload/post"), ['id' => 'uploader']) ?>
<input type="file" name="userfile" value="">
<input type="submit" value="Submit" />
<?php echo form_close() ?>
JAVASCRIPT
$('#uploader').submit(function (event) {
event.preventDefault();
$.ajax({
url: window.location.href + '/post',
type: "POST",
dataType: 'json',
data: new FormData(this)
});
});
控制器
public function post()
{
$this->load->helper('url');
$this->load->helper('form');
$this->load->library("upload");
$file = $this->common->nohtml($this->input->post("userfile"));
$this->upload->initialize(array(
"upload_path" => 'upload',
"overwrite" => FALSE,
"max_filename" => 300,
"encrypt_name" => TRUE
));
$this->upload->do_upload('userfile');
$data = $this->upload->data();
$image_file = $data['file_name'];
}
【问题讨论】:
-
您没有将文件传递给上传类,即
$file。初始化后你应该有类似if ( ! $this->upload->do_upload('userfile')){/*code*/}的东西。查看上传here的基本示例。 -
我已经尝试过了,但是没有用。
-
错误是什么?
var_dump('$this->input->post('userfile');exit;检查 PHP 是否正在获取这些数据。 -
未发现错误。我有更多输入,一切正常,但文件上传不起作用。
-
您需要选择是使用 AJAX 还是默认表单发布。这样 PHP 在 JS 完成它的工作之前重定向页面。如果你想使用AJAX,你需要结合一些JS库来上传。
标签: javascript php jquery ajax codeigniter