1. 程式人生 > >PHP簡單實現非同步多檔案上傳並使用Postman測試提交圖片

PHP簡單實現非同步多檔案上傳並使用Postman測試提交圖片

    雖然現在很多都是使用大平臺的物件儲存存放應用中的檔案,但有時小專案還是可以使用以前的方式上傳到和程式一起的伺服器上,強調一下這裡是小眾需求,大眾可以使用阿里雲的OSS,騰訊的COS,七牛的巴拉巴拉xxxxxx……

    

Postman使用

1. 開啟後,選擇"body"->"form-data",key懸浮的時候選擇“File”, 然後value會出現一個檔案按鈕。

2. 本地的上傳方法測試一下列印一下。

3. 以上使用Postman測試檔案上傳介面就通了,下面就寫一個非同步上傳的效果。

 

多檔案非同步上傳

1. 前端

<!--圖片上傳-->
            <div class="row cl">
                <label class="form-label col-xs-4 col-sm-3"><span class="c-red">*</span> 圖片:</label>
                <div class="formControls col-xs-8 col-sm-3">
                    <input id="img" type="file" multiple="true" onchange="uploadImgs(this,event)"/>
                    <div id="img_box">
                        <foreach name="img_upload.img_arr" item="data">
                        <div class="img_item">
                            <img id="ImgPr" class="hid" src="{$data.url}"/>
                            <span class="del hid" onclick="closeImg(this)">X</span>
                        </div>
                        </foreach>
                    </div>

                    <input id="hid_img" type="hidden" name="img" value="{$img_upload['img_str']}"/>
                </div>
            </div>
            <!--圖片上傳-->



// 多圖片上傳觸發事件
        function uploadImgs(_this,event) {
            // 例項FormData
            var data = new FormData();
            for (var i = 0; i < event.target.files.length; i++) {
                var files = event.target.files[i];
                // 批量新增檔案
                data.append('file[]', files);
            }
            // 非同步提交
            ajaxUpload(data);
        }

        function ajaxUpload(data) {

            $.ajax({
                url: '{$ajax_upload_url}',
                type: "POST",
                data: data,
                dataType: 'json',
                processData: false,// *重要,確認為false
                contentType: false,
                // beforeSend: function () {
                //     console.log(11111);
                // },
                success: function (res) {
                    if(res.error == 1) {
                        alert(res.msg);
                        return;
                    }else {
                        console.log(res);
                        var imgArr = $("#hid_img").val();
                        $.each(res.data,function(index,data) {
                            // 追加顯示
                            $("#img_box").append(
                                '<div class="img_item">'+
                                    '<img id="ImgPr" class="hid" src="'+data.path+'"/>'+
                                    '<span class="del hid" onclick="closeImg(this)">X</span>'+
                                '</div>'
                            );
                            if(!imgArr) {
                                imgArr = data.path;
                            }else {
                                imgArr += ","+data.path;
                            }

                            // 追加提交資料
                            //$(".formControls").append('<input id="hid_img" type="hidden" name="img[]" value="'+data.path+'"/>');
                        })
                        $("#hid_img").val(imgArr);
                    }
                },
                error: function (res) {
                    alert('非同步上傳圖片接口出錯');
                    return;
                }
            });
        }

 

2. PHP部分就是和同步方式一樣。

 /*
     * 圖片上傳
     * */
    public function ajaxUpload() {
        $upload = new \Think\Upload();// 例項化上傳類
        $upload->maxSize   =     3145728 ;// 設定附件上傳大小 3145728
        $upload->exts      =     array('jpg', 'gif', 'png', 'jpeg');// 設定附件上傳型別
        $upload->rootPath  =     './Uploads/'; // 設定附件上傳根目錄
        $upload->savePath  =     'repair/'; // 設定附件上傳(子)目錄
        // 上傳檔案
        $info   =   $upload->upload();
        if(!$info) {// 上傳錯誤提示錯誤資訊
            $this->ajaxReturn(array("error"=>1,"msg"=>$upload->getError(),"data"=>array()));
        }else{// 上傳成功
            $uploadFile = array();
            foreach($info as $key=>$value) {
                $uploadFile[] = array(
                    "path" => ltrim($upload->rootPath,'.').$value['savepath'].$value['savename'],
                    "ext" => $value['ext'],
                );
            }

            $this->ajaxReturn(array("error"=>0,"msg"=>"上傳成功","data"=>$uploadFile));
        }
    }

 

公眾號

相關推薦

PHP簡單實現非同步檔案使用Postman測試提交圖片

    雖然現在很多都是使用大平臺的物件儲存存放應用中的檔案,但有時小專案還是可以使用以前的方式上傳到和程式一

php進階——02 檔案

前言 使用MVC的思想去封裝一個多檔案上傳類,入口檔案為index.php,檢視檔案有single和group2個html檔案,controller有upload.class.php。 index.php // 1.定義根目錄常量FILEROOT

java實現檔案儲存到資料庫

好久沒有寫部落格了,今天專案裡需要一個功能,即前臺實現多圖片上傳列表,並後臺儲存到mysql中。前臺後臺一起弄,用了半天時間終於搞定了。 實現:前臺Layui實現;後臺servlet+hibernate 不多廢話,先上圖 前臺實現主要是用的layui框架,框架本

ASP.NET Core單檔案檔案儲存到服務端

前言:   在我們日常開發中,關於圖片,視訊,音訊,文件等相關檔案上傳並儲存到服務端中是非常常見的一個功能,今天主要是把自己在開發中常用的兩種方式記錄下來方便一下直接使用,並且希望能夠幫助到有需要的同學! 一、配置ASP.NET Core中的靜態檔案: 簡單概述:   在ASP.NET Core應用中靜態資原

c#檔案簡單實現

實現效果:前端實現自定義多檔案上傳。 此處需要注意的是form標籤裡面新增屬性(enctype="multipart/form-data")因為比較簡單廢話不說,直接上程式碼。 前端頁面: <%@ Page Language="C#" AutoEventWireup=

TP5實現檔案及展示

view層上傳: <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title></head><body&

webuploader實現檔案

問題:  1: 上傳失敗,不知道怎麼在服務端寫返回值?  2: 做個多檔案上傳怎麼辦?  1:上傳失敗,不知道怎麼在服務端寫返回值? (1):首先在初始化Web Uploader  的方法寫上 server: 'http://localho

在SSM框架中使用AJAX實現檔案

今天來學習一下在SSM框架中使用ajax實現檔案的上傳。 1.首先我們需要一個搭建好的SSM框架專案,這個在這篇文章裡不是重點,自行先搭建好需要的專案。 這裡我是用的jsp頁面來和後臺介面關聯,在jsp檔案中我們需要一個form表單,請求方法為POST,enctype="mu

Java架構-Spring mvc+oss儲存+fileupload檔案實現SSO單點登入模板管理

之前給大家介紹了sso的相關知識點和整合方案,考慮到每個系統所屬行業的不同,這邊針對於不同行業做了一些統一的sso單點登入介面模板,使用fileupload多檔案上傳+OSS阿里雲端儲存方案。 1. 阿里雲oss儲存Utils Java程式碼 2. 阿里雲配

Java Web FormData格式資料流實現檔案

1.html <``input type="file" multiple="multiple" accept="image/gif, image/jpeg, image/png, image/jpg, image/bmp" /> 2.JS $(document).on("ch

java實現檔案01

1、html程式碼 <html> <head> <link rel="stylesheet" type="text/css" href="table.css" /> <link rel="stylesheet" type="text/css"

webuploader,webuploader檔案,百度webuploader批量非同步檔案

有人學習過子恆老師webuploader使用指南後, 留言說“webuploader多檔案上傳怎麼實現?webuploader怎麼上傳多圖片” 其實這些人都是沒有看完整個教程的原因, 下面來談談…

Java Servlet3.0使用getPart/getParts實現檔案檔案

一、使用工具: (1)Firefox瀏覽器 (2)Eclipse 二、實現單檔案上傳 (1)Servlet 原始碼 package com.servlet; import java.io.IOExce

Spring MVC實現檔案

1、修改POJO和DAO實現類  public class User{ //......其他屬性省略 private String idPicPath;//證件照路徑 private String workPicPath;//工作證照片路徑

java實現檔案至本地伺服器

博主最近在做一個內網專案,內部可以訪問外部資料,但是外部訪問不了內部資料,這也就造成了可能檔案無法上傳,所以博主另闢蹊徑,在本地伺服器上建立一個資料夾專門用來儲存上傳資料。 環境:jdk,tomcat 一、前臺上傳檔案(ajax上傳) <input type=

ASP.NET MVC實現檔案

要實現ASP.NET MVC中的多檔案上傳,其實最關鍵的一步是要在input上定義multiple屬性,使之可以支援多檔案上傳。 其實有幾個比較重要的地方,form一定要申明enctype=“multipart/form-data”,其次是  <input type=

ajax 利用formdata物件 實現檔案

$(function(){ $("#btn").click(function(){ var formData = new FormData(); for(var i=0; i<$('#file')[0].files.l

PHP的ftp檔案檔案操作類

PHP針對ftp檔案的操作方法,如果是隻操作一個ftp,可以使用裡面的單利模式, 不需要每次都去例項化,我的專案中需要去連結很多個ftp伺服器; 所以需要多次去連線和關閉; 1 2 3 4 5 6 7

php CI框架單個file表單檔案例子

這裡使用的是CI2的版本,我們可以在一個file表單裡選擇多個檔案上傳。 先看看錶單怎麼寫: 要注意的是name需要使用陣列的形式,否則$_FILES變數僅僅獲取1個檔案的資訊。 <form action="/index.php" method="post" enctype="