【发布时间】:2015-03-24 12:22:14
【问题描述】:
我正在建立一个网站,您可以在该网站上上传帖子,就像 facebook。
一切都很好,除了在您上传帖子的那一刻,上传后您可以将图片上传到该帖子。
我希望能够将图片上传到帖子然后上传带有图片的帖子。这是我的尝试:
数据库图像表
+-------------------------------------------------+
| image_id | user_id | image_name | post_id |
| 1 | 1 | bla | 2 |
+-------------------------------------------------+
视图
<script>
$(function () {
$("#imageUpload").submit(function (e) {
e.preventDefault();
var formData = new FormData($('#imageUpload')[0]);
$.ajax({
url: 'post/create', //Trying to call the controller
type: 'post',
data: formData,
cache: false,
contentType: false,
processData: false
});
return false;
});
});
</script>
<form action="<?php echo Config::get('URL');?>post/create" method="post" id="imageUpload" enctype="multipart/form-data">
<input type="text" name="post_text" placeholder="Post something" />
<input type="file" name="images[]" multiple required />
<input type="submit" value='post' autocomplete="off" />
</form>
控制器
public function create()
{
PostModel::createPost(strip_tags($_POST['post_text']));
PostModel::uploadPostImages($_POST['post_id']);
}
我省略了模型,因为那里的功能可以正常工作。
如何在发布帖子之前获取帖子 ID 以在图像表中使用它?
我会非常感谢任何形式的帮助!
更新
<script>
$("#imageUpload").submit(function (e) {
var fd = new FormData();
var imagefile= document.getElementById('imagefile');
var files = imagefile.files;
for (var i = 0; i < files.length; i++)
{
var file = files[i];
fd.append('imagefile[]', file, file.name);
}
fd.append("post_text", document.getElementById('post_text').value);
fd.append("post_id", document.getElementById('post_id').value);
$.ajax({
url: 'post/create',
type: 'POST',
data: fd,
cache: false,
contentType: false,
processData: false
});
return false;
});
});
</script>
<form action="<?php echo Config::get('URL');?>post/create" method="post" id="imageUpload" enctype="multipart/form-data">
<input type="text" name="post_text" id="post_text" placeholder="Post something" />
<input type="file" name="images[]" id="imagefile" multiple required />
<input type="hidden" name="post_id" id="post_id" value="post_id" />
<input type="submit" value='post' autocomplete="off" />
</form>
【问题讨论】:
-
您可以在保存后从帖子中获取 ID,例如通过
$mysqli->insert_id(取决于你使用什么)。这可能是您的createPost函数的返回值。所以关于你的模型的信息会很好...... -
谢谢!这就是我目前正在做的事情。但我正在尝试找到一种在上传帖子之前将图片上传到帖子的方法。
-
如果你的帖子是自动递增的,你可以试试stackoverflow.com/questions/6761403/…
-
对您来说最简单的方法可能是插入两个查询,捕获 ID,然后更新您刚刚插入的查询。还有其他方法,但我会尝试从它开始。
标签: php jquery ajax file-upload pdo