控制器:
function post()
{
if(!$this->input->is_ajax_request())
{
show_404();
exit;
}
$data['result'] = false;
$config['upload_path'] = base_url().'userfiles/customer';
$config['allowed_types'] = 'pdf';
$config['max_size'] = 100000;
$this->load->library('upload', $config);
$file = $this->input->post('userfile');
if ( ! $this->upload->do_upload($file))
{
$data['result'] = true;
$error = array('error' => $this->upload->display_errors());
$data['error'] = $error;
}
else
{
$data['result'] = true;
$data_upload = array('upload_data' => $this->upload->data());
$data['success'] = $data_upload;
}
echo json_encode($data);
}
视图:
<div class="form">
<div class="form-group">
<label class="form-label" for="package">Package :</label>
<select class="package form-control" id="package" name="package">
<option value="none">Please select..</option>
<?php foreach($package as $row) { ?>
<option value="<?php echo $row['id_order_package'] ?>"><?php echo $row['name'] ?></option>
<?php } ?>
</select>
<div class="error" id="msg_package"></div>
</div>
<div class="form-group">
<label class="form-label" for="price">Price ( Rp ) :</label>
<input type="text" class="form-control" name="price" id="price" placeholder="" disabled>
<div class="error" id="msg_price"></div>
</div>
<div class="form-group">
<label class="form-label" for="days">Days :</label>
<input type="text" class="form-control" name="days" id="days" placeholder="" disabled>
<div class="error" id="msg_days"></div>
</div>
<div class="form-group">
<label class="form-label" for="userfile">File :</label>
<input type="file" id="userfile" name="userfile" class="form-control">
<div class="error" id="msg_userfile"></div>
</div>
<div class="form-group">
<label class="form-label" for="description">Description :</label>
<textarea class="form-control" rows="5" name="description" id="description"></textarea>
<div class="error" id="msg_description"></div>
</div>
<div class="form-group center">
<div class="btn btn-primary">ORDER</div>
</div>
</div>
Javascript:
$('.btn').click(function(e){
$('#msg_package').html(' ');
$('#msg_userfile').html(' ');
$('#msg_description').html(' ');
if($('#package').val() == 'none') {
$('#msg_package').html('Please select package');
} else if($('#userfile').val() == '') {
$('#msg_userfile').html('This field is required');
} else if($('#description').val() == '') {
$('#msg_description').html('This field is required');
} else {
$.ajax({
url : '<?php echo base_url() ?>account_order/add/post',
type : 'POST',
dataType: 'json',
mimeType:"multipart/form-data",
processData: false,
data : { userfile: $('#userfile')[0].files , price: $('#price').val() , days: $('#days').val() },
success: function( data ) {
if(!data['result']){
}else{
alert(data['error']);
}
}
});
}
});
但是,我得到一个错误
{"result":true,"error":{"error":"<p>You did not select a file to upload.<\/p>"}}
我试图从ajax发布数据和文件,但是它不起作用。我的问题是如何解决该错误?为什么控制器无法读取用户文件的内容?
谢谢
尝试将您的输入内容放入表单并提供id =’your_form_id表单,然后以这种方式在javascript中发送数据:
var data = new FormData(document.getElementById("your_form_id"));
然后替换这行 data : { userfile: $('#userfile')[0].files , price: $('#price').val() , days: $('#days').val() },
有了这个 data: data,
也设置以下data: data,
:
async: false,
processData: false,
contentType: false,
问题内容: 我可以使用以下jQuery代码使用ajax请求的POST方法执行文件上传吗? 如果可能,我是否需要填写部分?这是正确的方法吗?我只将文件发布到服务器端。 我一直在搜索,但是我发现是一个插件,而在我的计划中我不想使用它。至少目前是这样。 问题答案: 上传文件是 不是 有可能通过AJAX。 您可以使用来上传文件,而无需刷新页面。 更新 使用XHR2,支持通过AJAX上传文件。例如通过对象,
问题内容: 我在stackoverflow和普通的Internet上都看过,找不到一个简单的AJAX文件上传器(仅表单提交)。我发现的那些不够灵活,不符合我的目的。如果我可以将此脚本用于文件上传,那就太好了: 在HTML中,我将拥有 谢谢 问题答案: 这是一个简单的ajax文件上传器 上载 如果您不想使用闪光灯,则可以使用此闪光灯。 AxUploader
问题内容: 因此,我尝试上传没有任何外部插件的文件,但是遇到了一些错误。 我的服务器: 我收到请求的文件。 现在如何正确获取带有我的代码的上传文件? 问题答案: 我遵循了本教程http://www.script-tutorials.com/pure-html5-file- upload/ ,在php部分中,我替换为: 也改变了这行
问题内容: 看来我还没有清楚地传达出我的问题。我需要发送一个文件(使用AJAX),并且需要使用Nginx HttpUploadProgressModule 获取文件的上传进度。我需要一个很好的解决方案。我已经尝试过使用jquery.uploadprogress插件,但是我发现自己不得不重写其中的大部分内容,以使其在所有浏览器中都能正常工作并使用AJAX发送文件。 我所需要的只是执行此操作的代码,它
问题内容: 我试图编写代码以将文件上传到PHP中的“媒体”文件夹。由于某些原因,它仍然无法正常工作。 这是执行代码: 这是我的表单代码: 任何想法为什么它可能无法正常工作? 编辑: 当我使用命令“ print_r($ _ FILES);”时,它显示: Array([file] => Array([name] =>屏幕截图2012-05-29 at 12.36.11 PM.png [type] =>
问题内容: 这就是我在PHP代码中使用Ajax上传pdf文件的方式 从我如何将其放置到以及如何将其传递到php文件,以便我可以检查是否不为空 问题答案: 尝试从属性创建对象,将其转换为字符串 js 的PHP jsfiddle http://jsfiddle.net/guest271314/LL95z474/