namespace App\Http\Controllers;
use App\Models\Opinion;
use App\Models\Shops;
use App\Models\ShopSchool;
use App\Models\Updated;
use App\Models\User;
use Cache;
use Carbon\Carbon;
use Illuminate\Http\Request;
use PhpSms;
use Storage;
class CommonController extends Controller
{
public function uploadImage(Request $request)
{
if ($request->hasFile('upfile')) {
$file = $request->file('upfile');
$allowed_extensions = ['png', 'jpg', 'gif'];
if ($file->getClientOriginalExtension() && !in_array($file->getClientOriginalExtension(), $allowed_extensions)) {
return ['error' => 'You may only upload png, jpg or gif.'];
}
$baseName =md5(time().str_random(10).uniqid());
$newName = $baseName.'.'.$file->getClientOriginalExtension();
$saveDir = 'upload/'.date('Y').'/'.date('m').'/'.date('d').'/';
$savePath = $saveDir.$newName;
$bytes = Storage::put($savePath, file_get_contents($file->getRealPath()));
if (Storage::exists($savePath)) return response()->json(['code'=>200,'msg'=>'上传成功','data'=>['uri'=>$savePath]]);
}
return response()->json(['code'=>500,'msg'=>'上传失败']);
}
//图片修改
public function postEditorUpload(Request $request)
{
if ($request->hasFile('upfile')) {
$file = $request->file('upfile');
$allowed_extensions = ['png', 'jpg', 'gif'];
if ($file->getClientOriginalExtension() && !in_array($file->getClientOriginalExtension(), $allowed_extensions)) {
return ['error' => 'You may only upload png, jpg or gif.'];
}
$baseName =md5(time().str_random(10).uniqid()).'.'.$file->getClientOriginalExtension();
$newName = $baseName;
$saveDir = 'uploads/'.date('Y').'/'.date('m').'/'.date('d').'/';
$savePath = $saveDir.$newName;
// $bytes = Storage::put($savePath, file_get_contents($file->getRealPath()));
$bytes = Storage::put($savePath, file_get_contents($file->getRealPath()));
$size = Storage::size($savePath);
$url = $savePath;
if (Storage::exists($savePath))
return json_encode(array(
"originalName" => $file->getClientOriginalName(),
"name" => $file->getClientOriginalName(),
"url" => $url,
"size" => $size,
"type" => '.'.$file->getClientOriginalExtension() ,
"state" => 'SUCCESS',
"full_url" => config('app.img_url').$savePath
));
}
return response()->json(['code'=>500,'msg'=>'上传失败']);
}
public function uploadAudio(Request $request)
{
if ($request->hasFile('upfile')) {
$file = $request->file('upfile');
$allowed_extensions = ['mp3'];
if ($file->getClientOriginalExtension() && !in_array($file->getClientOriginalExtension(), $allowed_extensions)) {
return ['error' => 'You may only upload png, jpg or gif.'];
}
$baseName =md5(time().str_random(10).uniqid());
$newName = $baseName.'.'.$file->getClientOriginalExtension();
$saveDir = 'upload/'.date('Y').'/'.date('m').'/'.date('d').'/';
$savePath = $saveDir.$newName;
$bytes = Storage::put($savePath, file_get_contents($file->getRealPath()));
if (Storage::exists($savePath)) return response()->json(['code'=>200,'msg'=>'上传成功','data'=>['uri'=>$savePath]]);
}
return response()->json(['code'=>500,'msg'=>'上传失败']);
}
public function getSmsCode(Request $request)
{
$phone = $request->get('phone');
\Log::info(json_encode($phone));
if (empty($phone)) return response()->json(['code' => 500, 'msg' => '手机号不能为空!']);
$user = User::where('email',$phone)->first();
\Log::info(json_encode($user));
if(empty($user)) return response()->json(['code' => 404, 'msg' => '手机号不存在,请注册!']);
if (!Cache::has('reset_phone_' . $phone)) {
$code_reset = random_int(100000, 999999);
Cache::put('reset_phone_' . $phone, $phone, 1);
Cache::put('reset_captcha_' . $phone, $code_reset, 5);
if (strlen(intval($phone)) != 11) return response()->json(['code' => 500, 'msg' => '手机号格式错误!']);
$data = ['code' => $code_reset, 'product' => '学生惠'];
\Log::info(json_encode($data));
$req = PhpSms::make()->to($phone)->template('Alidayu', 'SMS_55690072')->data($data)->send();
\Log::info(json_encode($req));
if($req['success'] == false) {
return response()->json(['code' => 404, 'msg' => "验证码发送失败\n"."错误消息:".json_decode($req['logs'][0]['result']['info'],true)['sub_msg']]);
}else{
return response()->json(['code' => 200, 'msg' => '验证码发送成功']);
}
} else {
return response()->json(['code' => 500, 'msg' => '验证码发送请求太频繁,请稍候重试!']);
}
}
public function SmsCodeLogin(Request $request)
{
$phone = $request->get('phone');
$code = $request->get('code');
// return $code;
\Log::info(json_encode($phone));
\Log::info(json_encode($code));
if (empty($phone) || empty($code)) return response()->json(['code'=>404,'msg'=>'手机号或验证码不能为空']);
$user = User::where('email',$phone)->first();
\Log::info(json_encode($user));
if (!Cache::has('reset_captcha_'.$phone)) return response()->json(['code'=>404,'msg'=>'未获取验证码或验证码已失效']);
if(empty($user)){
return response()->json(['code'=>500,'msg'=>'手机号不存在!']);
}elseif (Cache::get('reset_captcha_'.$phone) != $code){
return response()->json(['code'=>500,'msg'=>'验证码错误!']);
}else{
Cache::pull('reset_phone_'.$phone);
Cache::pull('reset_captcha_'.$phone);
$user = User::where('email', $phone)->first();
$token = $user->createToken('scopes', [$user->scope])->accessToken;
\Log::info(json_encode($token));
return response()->json(['code'=>200,'data'=>['token'=>$token]]);
}
}
public function resetPassword(Request $request)
{
$phone = $request->get('phone');
$code = $request->get('code');
$password = $request->get('password');
// return response()->json(['code'=>404,'msg'=>'55','data'=>['phone'=>$phone,'code'=>$code,'pa'=>$password]]);
if (empty($phone) || empty($code)) return response()->json(['code'=>404,'msg'=>'手机号或验证码不能为空']);
if (!Cache::has('reset_captcha_'.$phone)) return response()->json(['code'=>404,'msg'=>'未获取验证码或验证码已失效']);
if (Cache::get('reset_captcha_'.$phone) != $code){
return response()->json(['code'=>500,'msg'=>'验证码错误!']);
}else{
Cache::pull('reset_phone_'.$phone);
Cache::pull('reset_captcha_'.$phone);
$user = User::where('email', $phone)->first();
$user->password = bcrypt($password);
$user->save();
return response()->json(['code'=>200,'msg'=>'ok']);
}
}
}
//前端
<div class="form-group " id="aetherupload-wrapper" >
<!--组件最外部需要有一个名为aetherupload-wrapper的id,用以包装组件-->
<label for="inputEmail3" class="col-sm-2 control-label">选择视频:</label><div class="col-sm-10" >
<input type="text" id="res" class="inp form-control" style="padding: 4px 12px;float:left" name="video" placeholder="视频">
<input type="file" id="file" onchange="aetherupload(this,'file').success(someCallback).upload()"/>
<div class="progress " style="height: 6px;margin-bottom: 2px;margin-top: 10px;width: 200px;">
<div id="progressbar" style="background:blue;height:6px;width:0;"></div>
</div>
<span style="font-size:12px;color:#aaa;" id="output"></span><!--需要有一个名为output的id,用以标识提示信息-->
</div>
<div id="result"></div>
</div>
<label for="inputPassword3" class="col-sm-2 control-label">图片</label>
<div class="col-sm-10">
<input type="text" id="input-upload" class="inp form-control" style="padding: 4px 12px;float:left;width: 93%" name="url_one" placeholder="图片">
<input type="button" class="btn btn-primary blue" onclick="getElementById('img-upload').click()" value="上传" style="float:left;">
<input type= "file" id="img-upload" name="upfile" onchange="uploadImage()" style="display: none"/>
</div>
</div>
<script src="{{ URL::asset('js/spark-md5.min.js') }}"></script><!--需要引入spark-md5.min.js-->
<script src="{{ URL::asset('cdn.bootcss.com/jquery/2.2.3/jquery.min.js') }}"></script><!--需要引入jquery.min.js-->
<script src="{{ URL::asset('js/aetherupload.js') }}"></script><!--需要引入aetherupload.js-->
<script>
// success(callback)中声名的回调方法需在此定义,参数callback可为任意名称,此方法将会在上传完成后被调用
// 可使用this对象获得fileName,fileSize,uploadBaseName,uploadExt,subDir,group,savedPath等属性的值
someCallback = function(){
// Example
$("#res").val(this.savedPath.substr(this.savedPath.lastIndexOf('/') + 1))
}
</script>
<script type="text/javascript">
function uploadImage() {
//创建FormData对象
var data = new FormData();
//为FormData对象添加数据
$.each($('#img-upload')[0].files, function(i, file) {
data.append('upload_img', file);
data.append('_token', '{{csrf_token()}}');
});
$.ajax({
url:'{{url('Admin/upload/Image')}}',
type: 'POST',
data: data,
cache: false,
contentType: false, //不可缺
processData: false, //不可缺
dataType:'json',
success:function(data){
$('#input-upload').val(data.url);
}
});
}
</script>