返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >uniapp多图上传php接受不到怎么解决
  • 646
分享到

uniapp多图上传php接受不到怎么解决

2023-05-14 22:05:37 646人浏览 泡泡鱼
摘要

一、背景介绍随着互联网技术的不断发展,越来越多的WEB应用需要支持图片上传功能。而uniapp是一款目前非常流行的移动端开发框架,具有跨平台、高效、易用等特点。然而,当我们使用uniapp开发多图上传功能时,就会遇到一些问题:服务器无法正确

一、背景介绍

随着互联网技术的不断发展,越来越多的WEB应用需要支持图片上传功能。而uniapp是一款目前非常流行的移动端开发框架,具有跨平台、高效、易用等特点。然而,当我们使用uniapp开发多图上传功能时,就会遇到一些问题:服务器无法正确接收请求,无法获取到传递的图片信息。本文将探讨这个问题的可能原因和解决方案。

二、问题描述

我们使用uniapp提供的上传组件插件 uni-upload 开发多图上传功能,使用 PHP 后端代码来接收上传请求和保存图片信息。上传页面代码如下:

<template>
  <view class="container">
    <view class="uploadBtn" @tap="chooseImage">
      <image src="../../static/plus.png"></image>
    </view>
    <view class="image-list">
      <view class="image-item" v-for="(item, index) in fileList" :key="index">
        <image :src="item.path"></image>
        <view class="delete" @tap="deleteImage(index)">删除</view>
      </view>
    </view>
    <view class="submitBtn" @tap="submit">
      提交
    </view>
  </view>
</template>

<script>
  import uniUpload from "@/components/uni-upload/uni-upload.Vue";
  export default {
    components: { uniUpload },
    data() {
      return {
        fileList: [],
      };
    },
    methods: {
      chooseImage() {
        uni.chooseImage({
          count: 9,
          success: (res) => {
            this.fileList = [...this.fileList, ...res.tempFilePaths.map((path) => ({ path }))];
          },
        });
      },
      deleteImage(index) {
        this.fileList.splice(index, 1);
      },
      submit() {
        const fORMData = new FormData();
        this.fileList.forEach((item, index) => {
          formData.append(`file${index}`, item.path);
        });

        uni.request({
          method: "POST",
          url: "Http://localhost/upload.php",
          header: {
            "Content-Type": "multipart/form-data",
          },
          data: formData,
          success: (res) => {
            console.log("upload success", res.data);
          },
          fail: (error) => {
            console.log("upload fail", error);
          },
        });
      },
    },
  };
</script>

上传组件采用了 uni-upload 插件,通过 chooseImage 方法调用相册选择图片,将 tempFilePaths 中的图片路径填入 fileList 中,同时在submit 方法中将 fileList 中的图片路径上传到后端服务器。

在服务器端,我们使用PHP作为后端语言,代码如下:

<?php
  $upload_dir = "uploads/";
  if (!file_exists($upload_dir)) {
    mkdir($upload_dir);
  }
  foreach ($_FILES as $key => $file) {
    $tmp_name = $file["tmp_name"];
    $name = $file["name"];
    if (move_uploaded_file($tmp_name, $upload_dir . $name)) {
      echo "upload success ";
    } else {
      echo "upload fail ";
    }
  }
?>

在本地测试中发现,在提交图片后,后端服务器无法正确读取上传请求,不能正确地保存图片。下面将会会提出一些解决方案。

三、问题原因

根据错误提示,可能是文件上传方式不正确导致的。而 FormData 和 multipart/form-data 是现在用来表单实现文件上传的一种重要方式,但是如果不设置合适的请求头信息,服务器无法正确获取上传文件,这可能是造成这个问题的原因。

四、解决方案

  1. 更改请求头信息

在上传请求中增加头部内容 type 与 boundary ,其中 type 是发送请求时的 Content-Type, boundary 部分是分割数据的随机字符串

uni.request({
method: "POST",
url: "http://localhost/upload.php",
header: {

"Content-Type": "multipart/form-data; boundary=" + Math.random().toString().substr(2),

},
data: formData,
success: (res) => {

console.log("upload success", res.data);

},
fail: (error) => {

console.log("upload fail", error);

},
});

  1. 更改上传文件的 key 名称

在客户端,我们通过表单数据 append 的方式将文件列表拼装成 formData 。此时,每个文件的 key 默认是它在 formData 中的位置,即从 0 开始的递增数字。而服务器接收到的 key 可能是上传组件里面指定的 name 值,因此,在上传文件时可以为每个文件指定一个 key 名称,如下:

this.fileList.forEach((item, index) => {
formData.append("file" + index, item.path);
});

由于这里的 file 不同于上传组件的 name 属性值,因此在后端处理时也应对应修改。

foreach($_FILES as $file) {
$tmp_name = $file["tmp_name"];
$name = $file["name"];
if (move_uploaded_file($tmp_name, $upload_dir . $name)) {

echo "upload success ";

} else {

echo "upload fail ";

}
}

  1. 高版本 PHP 需要增加参数修改 php.ini

对于高版本 PHP,需要在 php.ini 文件中增加以下参数:

post_max_size=20M
upload_max_filesize=20M
max_execution_time=600
max_input_time=600

设置完毕后,需要重启 Apache 才能生效。

四、总结

本篇文章探讨了 uniapp 多图上传时传递图片信息无法被 PHP 接收的问题,通过修改请求头信息、更改上传文件的 key 名称和配置 php.ini 文件等方式,成功解决了问题。最后,建议 Web 开发者在使用 uniapp 进行移动端应用开发中,要注意对上传功能进行有效的测试,减少不必要的错误和损失。

以上就是uniapp多图上传php接受不到怎么解决的详细内容,更多请关注编程网其它相关文章!

--结束END--

本文标题: uniapp多图上传php接受不到怎么解决

本文链接: https://lsjlt.com/news/207602.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • uniapp多图上传php接受不到怎么解决
    一、背景介绍随着互联网技术的不断发展,越来越多的Web应用需要支持图片上传功能。而uniapp是一款目前非常流行的移动端开发框架,具有跨平台、高效、易用等特点。然而,当我们使用uniapp开发多图上传功能时,就会遇到一些问题:服务器无法正确...
    99+
    2023-05-14
  • uniapp上传图片后台接收不到怎么办
    在移动应用开发中,上传图片是一项非常基础的功能。而uniapp作为目前非常受欢迎的跨平台开发框架,也自然具备该功能。然而,有些开发者在使用uniapp开发上传图片功能时遇到了一个问题:上传图片后台接收不到。那么,这个问题该如何解决呢?一、问...
    99+
    2023-05-14
  • Uniapp图片上传网络不稳定怎么解决
    如果Uniapp图片上传网络不稳定,你可以尝试以下解决方法: 检查网络连接:确保你的网络连接稳定,可以尝试连接其他网络或者重启路...
    99+
    2024-03-15
    Uniapp
  • php上传图片不缓存怎么解决
    要实现不缓存上传的图片,可以使用以下方法之一:1. 在上传图片的表单中添加随机的参数:html...
    99+
    2023-10-18
    php
  • uniapp监听不到上拉事件怎么解决
    在uniapp中,我们可以通过监听页面滚动事件来实现上拉加载更多的功能。但有时候会发现即使页面已经滑动到底部,也无法监听到上拉事件,这该如何解决呢?首先要明确的是,uniapp是基于Vue框架开发的,因此我们可以借鉴Vue的思路来解决这个问...
    99+
    2023-05-14
  • uniapp小程序解决不能上传文件/图片问题
    uniapp小程序解决不能上传文件/图片问题 当前uniapp微信小程序无法使用formData( )来上传文件/图片,会出现FormData is not defined 问题, 而官方给的un...
    99+
    2023-10-01
    小程序 uni-app 微信小程序 javascript vue
  • php怎么实现多图上传
    本文操作环境:Windows7系统、thinkphp v5.1版、DELL G3电脑php怎么实现多图上传?php实现多图上传的方法:先上一张图片给大家看看效果,有需要就下载学习。不一定非要在ThinkPHP里,只是我目前是去学习使用Thi...
    99+
    2022-03-09
    php
  • php图片上传不了的解决方法
    这篇文章将为大家详细讲解有关php图片上传不了的解决方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。php图片上传不了的解决办法:1、开启“file_uploads”,并确定上传大小;2、修改“memo...
    99+
    2023-06-14
  • PHP中怎么上传多张图片
    这篇文章将为大家详细讲解有关PHP中怎么上传多张图片,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。基本实现算法是使用数组的形式,把所有的图片提交个一个数组,对数组的元素进行一个个的处理。PH...
    99+
    2023-06-17
  • php怎么上传图片到数据库
    在PHP中,可以通过以下步骤将图片上传到数据库:1. 创建一个包含图片上传表单的HTML页面,其中包括一个文件选择输入字段和一个提交...
    99+
    2023-08-14
    php 数据库
  • php上传图片后不能显示是什么原因?怎么解决?
    PHP上传图片是Web开发中常用的功能,如果出现无法显示图片的问题,可能是以下几个原因造成的:图片上传路径错误在PHP代码中设置了图片上传路径,如果该路径设置错误,上传的图片将无法正常保存到服务器上,导致无法显示图片。因此,在编写PHP代码...
    99+
    2023-05-14
    php
  • php上传图片后不能显示如何解决
    这篇“php上传图片后不能显示如何解决”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“php上传图片后不能显示如何解决”文章吧...
    99+
    2023-07-05
  • uniapp遍历图片不出来怎么解决
    通过这段说明,我明白了原来是因为<image>标签使用了HTML中的img组件,在uniapp中不支持直接使用本地路径,而需要进行特殊处理。于是我采用HBuilderX开发工具页面将App启动模式设置为自定义(debug),现在...
    99+
    2023-05-14
  • php连接不上数据库怎么解决
    如果PHP无法连接到数据库,可能有以下几个原因和解决方法:1. 配置错误:检查PHP代码中的数据库连接字符串,确保用户名、密码、主机...
    99+
    2023-09-04
    php 数据库
  • php怎么上传图片到指定文件夹
    在PHP中,可以使用`move_uploaded_file`函数将上传的图片移动到指定的文件夹。首先,确保你的HTML表单中有一个带...
    99+
    2023-10-11
    php
  • SpringBoot上传文件大小受限问题怎么解决
    这篇文章主要介绍“SpringBoot上传文件大小受限问题怎么解决”,在日常操作中,相信很多人在SpringBoot上传文件大小受限问题怎么解决问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”SpringBoo...
    99+
    2023-06-30
  • 怎么把解决方案上传到gitee
    随着互联网的不断发展,开源社区和协作开发逐渐成为全球软件开发的主流方式。作为国内的一家开源社区和协作开发平台,gitee在国内受到了广泛的关注和认可。在gitee上,开发者可以轻松地分享和管理自己的代码,协同管理项目,并为他人提供解决方案。...
    99+
    2023-10-22
  • SpringBoot文件上传临时目录找不到怎么解决
    这篇文章主要讲解了“SpringBoot文件上传临时目录找不到怎么解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“SpringBoot文件上传临时目录找不到怎么解决”吧!SpringBoo...
    99+
    2023-06-08
  • win11远程计算机不接受连接怎么解决
    若您无法远程连接到 Windows 11 计算机,以下是一些可能的解决方案:1. 检查防火墙设置:确保远程桌面协议(RDP)已在计算...
    99+
    2023-09-06
    win11
  • 怎么解决php不能上传中文文件问题
    这篇文章主要介绍“怎么解决php不能上传中文文件问题”,在日常操作中,相信很多人在怎么解决php不能上传中文文件问题问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么解决php不能上传中文文件问题”的疑惑有所...
    99+
    2023-06-20
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作