gpt4 book ai didi

php - 使用 Codeigniter 上传 Ajax 文件

转载 作者:行者123 更新时间:2023-12-01 06:14:35 24 4
gpt4 key购买 nike

我正在尝试使用 codeigniter 和 ajax 上传图像。我已经有 ajax 方法将字段值插入数据库,这是上传文件的最简单的方法。这是 JQuery 自定义函数:

(function($){
jQuery.fn.ajaxSubmit =
function() {
$(this).submit(function(event) {
event.preventDefault();
var url = $(this).attr('action');
var data = $(this).serialize();

$.ajax({
url: url,
type: "POST",
data: data,
dataType: "html",
success: function(msg) {
$('#main').html(msg);
}
});

return this;
});
};
})(jQuery);

我这样调用它:

$(document).ready(function() {    
$('#myForm').ajaxSubmit();
});

该函数工作正常,数据被插入到数据库中,我什至在上传图像之前在模型中创建了一些目录,它们被创建了,但图像根本没有上传。

我知道我需要使用隐藏的 Iframe 来完成这项工作,但我不太知道如何将其集成到我的代码中。

最佳答案

我使用 CodeIgniter、jQuery 和 Malsup 表单插件创建了自定义 Ajax 文件 uploader 。这是 HTML 和 Javascript/CSS 代码。它还支持多个文件上传和进度。

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="content-type" content="text/html" />
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Ajax UP Bar</title>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script type="text/javascript" src="http://malsup.github.com/jquery.form.js"></script>
<script type="text/javascript">
$(document).ready( function() {
$('form').submit( function() {
var bar = $('.bar');
var percent = $('.percent');
var status = $('#status');
$(this).ajaxForm({
beforeSend: function() {
status.html();
var percentVal = '0%';
bar.width(percentVal)
percent.html(percentVal);
},
uploadProgress: function(event, position, total, percentComplete) {
var percentVal = percentComplete + '%';
bar.width(percentVal)
percent.html(percentVal);
},
complete: function(xhr) {
status.html(xhr.responseText);
}
});
});
});
</script>
</head>

<body>

<form method="post" action="<?php echo base_url('users/upload/'); ?>" enctype="multipart/form-data">
<label for="upload">Select : </label>
<input type="file" name="upload[]" id="upload" multiple="multiple" />
<input type="submit" name="fsubmit" id="fsubmit" value="Upload" />
</form>

<div class="progress">
<div class="bar"></div >
<div class="percent">0%</div >
</div>

<div id="status"></div>

</body>
</html>
<style>
body { padding: 30px }
form { display: block; margin: 20px auto; background: #eee; border-radius: 10px; padding: 15px }

.progress { position:relative; width:400px; border: 1px solid #ddd; padding: 1px; border-radius: 3px; }
.bar { background-color: #B4F5B4; width:0%; height:20px; border-radius: 3px; }
.percent { position:absolute; display:inline-block; top:3px; left:48%; }
</style>

在 CodeIgniter Controller 中:

<?php

if (!defined('BASEPATH'))
exit('No direct script access allowed');

class Users extends CI_Controller
{

public function __construct()
{
parent::__construct();
}

public function upload()
{
if (isset($_FILES['upload']['name'])) {
// total files //
$count = count($_FILES['upload']['name']);
// all uploads //
$uploads = $_FILES['upload'];

for ($i = 0; $i < $count; $i++) {
if ($uploads['error'][$i] == 0) {
move_uploaded_file($uploads['tmp_name'][$i], 'storage/' . $uploads['name'][$i]);
echo $uploads['name'][$i] . "\n";
}
}
}
}

}

希望这对您有帮助。谢谢!!

关于php - 使用 Codeigniter 上传 Ajax 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11556199/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com