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