php - file_put_contents 通过 PHP 中的 API 上传多张图片
问题描述
我正在尝试通过 PHP API 上传多个图像。
上传时,数据发送返回成功,但只是将图片的名称上传到数据库,文件并没有保存在服务器端。
我尝试指定单独的解码路径,然后使用该file_put_contents
功能,但没有正确上传到服务器。
if($_SERVER['REQUEST_METHOD']=='POST'){
$pic = $_POST['pic'];
$random = random_word(20);
$path = "grocery/item_img/".$random.".jpg";
$actualpath = "$random.jpg";
$actualpath1 = "$random1.jpg";
$actualpath2 = "$random2.jpg";
$sql = "INSERT INTO item (`pic`, `pic1`, `pic2`)
VALUES (NULL, '$actualpath', '$actualpath1', '$actualpath2')";
class emp{}
if(mysqli_query($koneksi,$sql)){
foreach ($_POST['pic'] as $name) {
file_put_contents($path, $name);
}
echo json_encode(array( 'success' => 1,'message'=>'Item Added Successfully'));
}
else{
echo json_encode(array( 'success' => 0,'message'=>'Failed to Add Item Image'));
}
}
function random_word($id = 20){
$pool = '1234567890abcdefghijkmnpqrstuvwxyz';
$word = '';
for ($i = 0; $i < $id; $i++){
$word .= substr($pool, mt_rand(0, strlen($pool) -1), 1);
}
return $word;
解决方案
解决了
foreach 提供了无效的参数
当将其编辑为
foreach ((array) $pic as $image) {
...
}
错误消失但仍然没有上传
然后尝试
move_uploaded_file($_FILES["pic"]["tmp_name"], $path1);
给出错误:未定义的索引:图片然后编辑为:
if (isset($_FILES['foto'])) {
move_uploaded_file($_FILES["foto"]["tmp_name"], $path1); }
错误消失但不会上传
试图将 file_put_contents 编辑为 pic1 的参数,它上传了第二张图片 ,,,
所以下面是上传三个图像同时将它们的路径存储到数据库的工作代码
无论如何要在工作时使它整洁
if($_SERVER['REQUEST_METHOD']=='POST'){
$pic = $_POST['pic'];
$pic1 = $_POST['pic1'];
$pic2 = $_POST['pic2'];
$random = random_word(20);
$random1 = random_word(20);
$random2 = random_word(20);
$path = "../item_img/".$random.".jpg";
$actualpath = "$random.jpg";
$actualpath1 = "$random1.jpg";
$actualpath2 = "$random2.jpg";
//upload files
$path1 = '../item_img/'.$actualpath;
$path2 = '../item_img/'.$actualpath1;
$path3 = '../item_img/'.$actualpath2;
$sql = "INSERT INTO item (`pic`, `pic1`, `pic2`)
VALUES (NULL, '$actualpath', '$actualpath1', '$actualpath2')";
class emp{}
if(mysqli_query($koneksi,$sql)){
file_put_contents($path1,base64_decode($pic));
file_put_contents($path2,base64_decode($pic1));
file_put_contents($path3,base64_decode($pic2));
}
echo json_encode(array( 'success' => 1,'message'=>'Item Added Successfully'));
}
else{
echo json_encode(array( 'success' => 0,'message'=>'Failed to Add Item Image'));
}
}
function random_word($id = 20){
$pool = '1234567890abcdefghijkmnpqrstuvwxyz';
$word = '';
for ($i = 0; $i < $id; $i++){
$word .= substr($pool, mt_rand(0, strlen($pool) -1), 1);
}
return $word;
推荐阅读
- angular - HTTP 缓存和 Angular Service Worker
- security - 允许 POST 到谷歌云功能但不允许 GET?
- javascript - 通过脚本从 MS Planner 下载 excel 文件
- python - 将一个数据帧中的匹配值替换为另一个数据帧中的索引值
- java - 是否可以检查线程在 JAVA 中运行在哪个处理器上?
- java - 如何在 Spring Boot 中连接外部数据库,同时保持与主数据库的连接
- node.js - 跨源资源共享错误:socket.io 推文流媒体应用程序中缺少alloworiginheader
- c++ - 无法使用虚拟终端序列更改控制台应用程序窗口标题
- python - Python 请求基本身份验证问题
- python - Plotly: How to use two color scales in a single plotly map figure?