【发布时间】:2018-06-02 04:55:25
【问题描述】:
大家好,我已经编写了代码来在单击按钮时捕获 div 标签的图像,javascript 代码将捕获该图像,但我想使用 codeigniter 保存捕获的图像,但我们不能使用默认的 codeigniter 上传方法,因为只能上传适用于创建一个对象的输入类型文件,但在这里通过 javascript 获取捕获的图像,所以我想将该图像上传到文件夹中,所以请告诉我如何使用 codeigniter 来做到这一点。下面我提到了我的代码。
Html code....
<div id="target" style="border: 1px solid #CCC;padding: 5px;margin: 5px;">
<div>
<p>PHP is a server-side scripting language designed primarily for web development.</p>
</div>
</div>
<form method="POST" enctype="multipart/form-data" id="form1">
<input type="hidden" name="img_value" id="img_value" value="" />
</form>
<input type="submit" value="Screenshot" onclick="capture();" />
javascript代码捕获图像并调用ajax保存图像
<script type="text/javascript">
function capture() {
$('#target').html2canvas({
onrendered: function (canvas) {
//Set hidden field's value to image data
$('#img_value').val(canvas.toDataURL("image/png"));
//Submit the form1
var hid_img=$("#img_value").val();
$.ajax({
url: "<?= base_url('controller/save_img') ?>",
type: "POST",
data: {
hid_img: hid_img,
},
success: function (response) {
$(".show_img").html(response);
}
});
}
});
}
</script>
codeigniter 的控制器方法中的代码用于将图像保存在文件夹中...
public function save_img() {
$data = $this->input->post($hid_img);
$file = md5(uniqid()) . '.png';
// remove "data:image/png;base64,"
$uri = substr($data,strpos($data,",")+1);
// save to file in uploads folder of codeigniter
file_put_contents('./uploads'.$file, base64_decode($uri));
}
to store image in table
$res=$this->db->insert('demo',array('img'=>base_url('uploads/').$file));
$detail = $this->db->select('*')->from('demo')->where('id', $this->db->insert_id())->get()->row();
echo '<img src="'.base_url('uploads/').$detail->message.'" style="width:500px;"/>';
【问题讨论】:
-
您当前的解决方案有什么问题?
$this->input->post($hid_img)也应该是$this->input->post('hid_img') -
@Alex 此代码未将文件保存到文件夹
-
好吧,如果这是您的实际代码,您应该会收到我在第一条评论中提到的错误。进行一些调试并返回错误。事情不会无缘无故地失败。
-
@Alex 显示错误,您没有选择要上传的文件
-
不要使用回答代码的人。它不适用于您的情况,因为您甚至在问题中注意到了这一点。 ci 上传库只处理文件上传,而不是 base64 发布流。本质上,它仅在您有 file 输入时才有效。无论如何,使用您的代码,并修复我上面提到的错误并进行一些调试。
标签: javascript php codeigniter