uniapp(uview组件库)文件上传功能 --通用篇 (带php laravel 接收数据 入库 等操作)

今天 自学了一下php 的laravel框架 写到一个文件上传功能 琢磨了好几个小时(php小白 基础基础基础基础基础

首先说明 这是前后端分离开发的一个小demo

前端(uniapp{使用了uview组件库}) 后端(php laravel框架

总结:这个文件上传需要的数据是
headers: { 'Content-Type': 'multipart/form-data' }
意思就是 formdata格式 要不然后端request是接收不到数据的
我的引入的这个组件呢 自己就是formdata格式 如下图:
在这里插入图片描述
如果你不用组件的话 就要设置请求头 然后把数据转换成formdata格式 这个自行百度
前端写法

使用了uview里面的 upload组件
在这里插入图片描述
在这里插入图片描述
然后一个点击事件 触发 调用接口
在这里插入图片描述
在这里插入图片描述

后端写法(接收数据)

在这里插入图片描述

前端代码:

<template>
	<view class="release">

		<u-navbar title="发布商品" :background="background"></u-navbar>

		<form :model="form" @submit="submit" @reset="" enctype="multipart/form-data">
			<view class="upload">
				<u-input v-model="form.introduce" type="textarea" :border="border" :placeholder="placeholder" :height="height"
				 :auto-height="autoHeight" />

				<u-upload :form-data="form" :action="action" ref="uUpload" :auto-upload="false" :file-list="fileList" :max-size="1 * 1024 * 1024"
				 max-count="1"></u-upload>
			</view>
			<view class="content">
				<u-input v-model="form.title" type="input" placeholder="请输入商品名称" :border="border" />
				<view class="" style="border-top: 1PX solid #d6d6d6;">
					<u-input v-model="form.price" type="number" placeholder="请输入商品价格" :border="border" />
				</view>

			</view>
			<view class="btn">
				<u-button shape="circle" type="error" @click="submit">发布</u-button>
			</view>
		</form>
		<u-toast ref="uToast" />
	</view>
</template>

<script>
	import axios from 'axios'
	export default {
		data() {
			return {
				background: {
					backgroundImage: 'linear-gradient(45deg, rgb(28, 187, 180), rgb(141, 198, 63))'
				},
				form: {

				},
				action: "http://127.0.0.1:8000/add/shops",
				border: false,
				height: 100,
				autoHeight: true,
				placeholder: "简要描述商品的入手渠道、新旧程度、转手原因",
				fileList: [],

			}
		},
		methods: {
			// 提交数据
			submit() {

				this.$refs.uUpload.upload();

				this.$refs.uToast.show({
					title: '添加成功',
					type: 'success',
				})
			}

		}
	}
</script>

<style lang="less">
	page {
		background: #ededed;
	}

	.release {

		.btn {
			position: fixed;
			left: 0;
			right: 0;
			bottom: 20rpx;
		}

		.upload {
			padding: 0 10rpx;
			background-color: #ffffff;
		}

		.content {
			padding: 0 10rpx;
			margin-top: 40rpx;
			background-color: #ffffff;
		}
	}
</style>

后端代码

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Models\Shop;
use Illuminate\Support\Facades\DB;


class ShopController extends Controller
{
    
    public function add(Request  $request)
    {
        $file = $request->file("file"); //获取图片全部信息

        $ext = $file->getClientOriginalExtension(); //获取后缀
        $res = time() . rand() . '.' . $ext;   //当前时间加一个随机数
        $img = './uploads/' . $res;   //拼接路径
        $file->move('./uploads',$img ); //移动到指定的文件夹
   
        $arr = array(
            [
                'pid' => 1,
                'title' => request('title'),
                'imges' => $img,
                'price' => request('price'),
                'introduce' => request('introduce')
            ]
        );
        $res = DB::table('shops')->insert($arr);  //入库
        if ($res) {
            return response()->json([
                'error' => 0,
                'msg' => 'success',
                'data' =>  $arr
            ]);
        } else {
            return response()->json([
                'error' => 1,
                'msg' => 'success',
                'data' => null
            ]);
        }
    }
}

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
.cs 界面代码 using System; using System.Data; using System.Data.SqlClient; using System.Configuration; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; using System.IO; public partial class _Default : System.Web.UI.Page { string name="b";//根据需要给上传的图片命名 int minsize=1;//上传文件的最低大小,单位kb int maxsize=1000;//上传文件的最大大小,单位kb protected void Page_Load(object sender, EventArgs e) { } protected void upload_Click(object sender, EventArgs e) { string fileName, fileExtension, FullName; if (UpImage.PostedFile != null) { if (UpImage.PostedFile.ContentLength != 0 && UpImage.PostedFile.ContentLength <= (1024 * maxsize) && UpImage.PostedFile.ContentLength >= (1024 * minsize)) { fileName = System.IO.Path.GetFileName(UpImage.PostedFile.FileName); fileExtension = System.IO.Path.GetExtension(fileName); if (IsExtension(fileExtension)) { try { FullName = name; CreateDir("upLoadImg"); FullName = DateTime.Now.ToString("yyyyMM") + "/" + FullName; UpImage.PostedFile.SaveAs(System.Web.HttpContext.Current.Request.MapPath(@"UpFiles/upLoadImg/") + FullName); } catch (Exception ex) { Response.Write("<script language=javascript>alert('" + ex.Message + "');</script>"); } } else { Response.Write("<script language=javascript>alert('上传的文件格式不对,请上传指定的文件格式!');</script>"); } } else { Response.Write("<script language=javascript>alert('没有上传文件,或者文件太大!请重新上传!');</script>"); } } }

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值