想定1具体コード

5380 ワード

私が何をしているのか分からないので、前の文章を見てください.AjaxとOSSファイルのアップロード、削除は昨日考えた解決策です.今日は試してみました.ついでにコードをここに貼ってください.
まずフロントコードの部分です.
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form id="tests" action="?" method="post" enctype="multipart/form-data">
    <div>
        <input type="hidden" value="">
        <input type="file">
        <button type="button">    </button>
        <span style="display: none">    </span>
        <a href="" data-lightbox="lightbox-test" style="display: none;">    </a><br>
    </div>
    <div>
        <input type="hidden" value="">
        <input type="file">
        <button type="button">    </button>
        <span style="display: none">    </span>
        <a href="" data-lightbox="lightbox-test" style="display: none;">    </a><br>
    </div>
</form>
<script src="/Public/JS/dist/js/jquery-3.1.0.min.js"></script>
<script src="/Public/JS/lightbox.js"></script>
<script type="text/javascript">
    var pre="//       oss    endpoint/";
    $("button").click(function () {
        var formData=new FormData();
//        $("input[type='file']").each(function (index,element) {
//            formData.append("oss_file[]",element.files[0]);
//        });
        var __this=$(this);
        var oldImageURL=$(this).prevAll("input[type='hidden']").val();
        formData.append("oss_fike",$(this).prev().get(0).files[0]);
        formData.append("oldImageURL",oldImageURL);
        var url="{:U('Index/index')}";
        $.ajax({
            url: url,
            type: "POST",
            data: formData,
            /**
             *  false         Content-Type
             */
            contentType: false,
            /**
             *   false    jQuery  formdata      
             * XMLHttpRequest   formdata        
             */
            processData: false,
            success: function (data) {
                __this.next("span").css("display","inline");
                __this.prevAll("input[type='hidden']").val(data);
                var new_href=data.substring(0,32);
                __this.nextAll("a").attr("href",pre+new_href);
                __this.nextAll("a").css("display","inline");
                alert("    ");
            },
            error: function () {
                alert("error");
            }
        });
    });
    $("span").click(function () {
        var url="{:U('Index/delImage')}";
        var img_url=$(this).prevAll("input[type='hidden']").val();
        var __this=$(this);
        $.get(url,{"object":img_url},function (data) {
            if(data.code=="2001"){
                __this.next().css("display","none");
                __this.css("display","none");
                alert(data.msg);
            }else{
                alert(data.msg);
            }
        });
    });
</script>
</body>
</html>

次に、バックグラウンド:
<?php
namespace Home\Controller;

use Think\Controller;
use Vendor\OSS\Image;

class IndexController extends Controller
{
    function __construct()
    {
        if(!session('key')){
            session('key',uniqid());
        }
        parent::__construct();
    }
    public function index()
    {
        if(IS_POST){
            $image=new \Vendor\OSS\Image();
            $key=array_keys($_FILES)[0];
            $oldImageURL=I("post.oldImageURL");
            if($oldImageURL!=""){
                $object=$this->checkImage($oldImageURL);
                if($object){
                    $image->delImg($object);
                }
            }
            $object=$image->uploadImg("Goods/",$_FILES[$key]);
            $extra=md5($object.session("key"));
            $this->ajaxReturn($object.$extra);
        }
        $this->display();
    }
    public function delImage(){
        $unchecked=I("get.object");
        $object=$this->checkImage($unchecked);
        if($object){
            $image=new Image();
            $image->delImg($object);
            $this->ajaxReturn(array("code"=>2001,"msg"=>"    "));
        }else{
            $this->ajaxReturn(array("code"=>2002,"msg"=>"    "));
        }

    }
    public function checkImage($unchecked){
        $object=substr($unchecked,0,32);
        $key=substr($unchecked,32,strlen($unchecked)-32);
        if(md5($object.session("key"))==$key){
            return $object;
        }else{
            return false;
        }
    }
}
?>

実現するのはとても簡単です!あまりプロフェッショナルな暗号化方式ではありませんが、私のような菜鶏にとってはもう達成感があります!!!知足常楽ですね.私はゆっくり進歩します.