图片上传的两种方式 阿星小栈

10 篇文章 1 订阅


图片上传是开发中常常用到的,上传图片一般分为两种,一种用form表单,另一种是ajax,下面介绍一下这两种具体用法。

ajax上传图片

页面无刷新,带来的体验更好。

前端代码

<form class="" enctype="multipart/form-data">
    <div class="mui-input-row">
       <input id="file" name="file" accept="image/*" onblur="up()">
    </div>
 </form>


<script type="text/javascript">
    function up() {
        var file = document.getElementById("file");
        var form = new FormData();
        form.append("fileImg",file.files[0]);
        $.ajax({
            type: "post",
            url: "save_image",
            data: form,
            contentType: false, // 注意这里应设为false
            processData: false,    //false
            cache: false,    //缓存
            success: function(data){
                console.log(data);
            }
        })
    }

</script>

PHP代码

public function save_image(Request $request)
{
    if (!empty($_FILES['fileImg'])){
       $name = $_FILES['fileImg']['name'];
    //防止重复不能上传
    $name = uniqid().$name;
       move_uploaded_file($_FILES['fileImg']['tmp_name'],'i/new/'.$name);
    }else{
        //
    }
}

form表单上传图片

前端代码

//注意 enctype="multipart/form-data"一定要写,不然获取不到数据。
<form action="handle.php" name="form" method="post" enctype="multipart/form-data">
  <input type="file" name="file" />
  <input type="submit" name="submit" value="上传" />
</form>

PHP代码

	$file = $_FILES['file'];//得到传输的数据
	//得到文件名称
	$name = $file['name'];
	$type = strtolower(substr($name,strrpos($name,'.')+1)); //得到文件类型,并且都转化成小写
	$allow_type = array('jpg','jpeg','gif','png'); //定义允许上传的类型
	//判断文件类型是否被允许上传
	if(!in_array($type, $allow_type)){
	  //如果不被允许,则直接停止程序运行
	  return ;
	}
	//判断是否是通过HTTP POST上传的
	if(!is_uploaded_file($file['tmp_name'])){
	  //如果不是通过HTTP POST上传的
	  return ;
	}
	$upload_path = "/image/i/"; //上传文件的存放路径
	//开始移动文件到相应的文件夹
	if(move_uploaded_file($file['tmp_name'],$upload_path.$file['name'])){
	  echo "Successfully!";
	}else{
	  echo "Failed!";
	}

当上传图片名中带有中文的时候会显示上传失败,可以把文件名转换一下:

		$imgname = $_FILES['file']['name'];
        $tmp = $_FILES['file']['tmp_name'];
        $filepath = 'statics/new_web/images/';

        if(move_uploaded_file ($tmp,$filepath.iconv("UTF-8","gbk",$imgname))){
            $data['indexs_img'] = '/'.$filepath.$imgname;
        }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
抱歉,作为AI语言模型,我无法在此处提供完整的代码示例。但是,我可以提供一些关于STM32和HC-SR的基础知识和代码参考。 STM32是一种基于ARM Cortex-M处理器的微控制器。它具有高性能、低功耗和灵活性等特点,广泛应用于各种嵌入式系统中。HC-SR是一种超声波测距模块,可以通过发送和接收超声波信号来测量距离。它通常与STM32等微控制器一起使用,以实现各种应用。 以下是一些参考代码,可以帮助您了解STM32与HC-SR的交互方式: ```c #include "stm32f10x.h" #define TRIG_PIN GPIO_Pin_0 #define ECHO_PIN GPIO_Pin_1 #define TRIG_PORT GPIOA #define ECHO_PORT GPIOA void init_GPIO(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); GPIO_InitStructure.GPIO_Pin = TRIG_PIN; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(TRIG_PORT, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = ECHO_PIN; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_Init(ECHO_PORT, &GPIO_InitStructure); } float measure_distance(void) { uint32_t start_time, end_time; float distance; GPIO_SetBits(TRIG_PORT, TRIG_PIN); Delay_us(10); GPIO_ResetBits(TRIG_PORT, TRIG_PIN); while (GPIO_ReadInputDataBit(ECHO_PORT, ECHO_PIN) == RESET); start_time = TIM_GetCounter(TIM2); while (GPIO_ReadInputDataBit(ECHO_PORT, ECHO_PIN) == SET); end_time = TIM_GetCounter(TIM2); distance = (float)(end_time - start_time) / 58.0; return distance; } int main(void) { init_GPIO(); while (1) { float distance = measure_distance(); // Do something with the distance value } } ``` 这段代码使用STM32的GPIO模块来控制HC-SR模块的触发和接收引脚,使用TIM模块来计时。在主循环中,调用`measure_distance`函数来测量距离,并将结果存储在`distance`变量中。您可以在此基础上进行进一步的开发,例如将距离值输出到LCD屏幕或通过无线模块发送到其他设备等。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值