花影流年
后端如何正确接收Long类型的数据,且防止前端随便输入字符串
后端如何正确接收Long类型的数据,且防止前端随便输入字符串
@Data
public class CommunityManageV1Req {
@ApiModelProperty(value = "业务id", required = true, dataType = "Long", position = 1, example = "1")
@NotNull(message = "操作业务id不能为空")
private Long businessId;
@ApiModelProperty(value = "操作业务类型 1-问题 2-回答 3-评论 4-动态 8-项目(根据类型分别对应业务ID)", required = true, dataType = "Integer", position = 1, example = "1")
@NotNull(message = "操作业务类型不能为空")
private Integer businessType;
@ApiModelProperty(value = "操作类型 0-隐藏 1-展示 2-删除", required = true, dataType = "Integer", position = 1, example = "1")
@NotNull(message = "操作状态不能为空")
private Integer optStatus;
@ApiModelProperty(hidden = true, value = "操作人", required = true, dataType = "String", position = 1, example = "1")
private String optUserName;
@ApiModelProperty(hidden = true, value = "操作人ID", required = true, dataType = "Long", position = 1, example = "1")
private Long optUserId;
}
花影流年
用产生式得出最短巡查路线的距离的算法是什么?
package com.wm.course.utils;
import java.util.ArrayList;
import java.util.List;
public class TSP {
// 距离矩阵
private static final int[][] distances = {
{0, 7, 10, 5, 10},
{7, 0, 10, 7, 10},
{10, 10, 0, 6, 8},
{5, 7, 6, 0, 9},
{10, 10, 8, 9, 0}
};
// 地点数量
private static final int N = distances.length;
// 保存最短路径
private static List shortestPath = new ArrayList();
// 保存最短路径的距离
private static int shortestDistance = Integer.MAX_VALUE;
public static void main(String[] args) {
List path = new ArrayList();
path.add(0); // 从A开始
boolean[] visited = new boolean[N];
visited[0] = true;
tsp(path, visited, 0, 0);
System.out.println("最短路径: " + shortestPath);
System.out.println("最短距离: " + shortestDistance);
}
private static void tsp(List path, boolean[] visited, int currentCity, int currentDistance) {
if (path.size() == N) {
// 回到起点A
currentDistance += distances[currentCity][0];
if (currentDistance (path);
shortestPath.add(0); // 添加起点A
}
return;
}
for (int city = 0; city < N; city++) {
if (!visited[city]) {
visited[city] = true;
path.add(city);
tsp(path, visited, city, currentDistance + distances[currentCity][city]);
path.remove(path.size() - 1);
visited[city] = false;
}
}
}
}
花影流年
年终了你们公司有述职报告吗
年终了你们公司有述职报告吗?快来参与我的小调研吧
花影流年
wanglin2/mind-map
该项目包含一个不依赖任何框架的思维导图 JavaScript 库,以及一个采用 Vue.js+ElementUI 开发的支持本地部署、功能丰富的在线思维导图应用。
花影流年
veloren/veloren
灵感来自《塞尔达传说:旷野之息》、《矮人要塞》和《我的世界》等游戏。虽然这款游戏的画质低,但拥有广阔
花影流年
澳门回归祖国25周年丨倾听,莲花盛开的声音——澳门社会文化发展纪事
澳门回归祖国25周年丨倾听,莲花盛开的声音——澳门社会文化发展纪事
花影流年
spingboot3.0的新特性有哪些?
"https://wmprod.oss-cn-shanghai.aliyuncs.com/community/FnhgQs3NX7unIUoj_XIYnEDv0iRX.jpg" (https://wmprod.oss-cn-shanghai.aliyuncs.com/community/FnhgQs3NX7unIUoj_XIYnEDv0iRX.jpg)
花影流年
喜提鸿蒙专业证书
喜提鸿蒙专业证书,伙伴们加油,66666!
花影流年
发表我的第一个动态
发表我的第一个动态,程序员上线加班的一天
花影流年
程序员不上班还有哪些出路?(1024活动话题)
未来的保安,快递员,外卖员都是归宿
花影流年
找对象和赚钱哪个更重要?(1024活动话题)
找对象重要,有钱不一定有对象,有对象大概率会很花钱
花影流年
上几年班,才能买得起所在城市的房子?(1024活动话题)
上班两年就和对象东拼西借买了房,现在是一起还的状态,月光族的成员
花影流年
程序员们现在手头都有多少存款?(1024活动话题)
我是月光族,还房贷,养娃剩下的刚好够吃饭
花影流年
java11的新特性有哪些
java11的新特性有哪些
花影流年
spingboot3.0的新特性有哪些
spingboot3.0的新特性有哪些
花影流年
vue3: v-model如何传递多层嵌套属性?
vue3: v-model如何传递多层嵌套属性?
花影流年
javak控指针有多少种原因
"https://wmprod.oss-cn-shanghai.aliyuncs.com/community/FqicTjBjBEFqjVIC6YkJlgqZJh1B.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/community/FqicTjBjBEFqjVIC6YkJlgqZJh1B.png)
花影流年
rocketMQ第一波发送的延迟消息消费者不消费
org.apache.rocketmq
rocketmq-spring-boot-starter
2.2.3
rocketMQ第一波发送的延迟消息消费者不消费,然而第二波发送的延迟消息能被消费者消费,求大声解答
花影流年
如何评价9月10日发布的iPhone16系列?你会购买吗?
听说后面的苹果不让用微信了,但是我必须用微信,所以想换华为替代下
花影流年
VUE开发中,很多NPM第三方包没有TS版本的?
在使用Vue进行开发时,确实可能会遇到一些NPM上的第三方库没有提供TypeScript支持的情况。这种情况对于希望利用TypeScript来增强代码质量和可维护性的开发者来说是一个挑战。下面是一些建议来应对这个问题:
手动添加类型声明:
可以为这些库创建自己的.d.ts文件,定义你需要的类型。这样可以让你的IDE或者其他TypeScript工具更好地理解和提示相关的API。
使用declare模块:
在你的项目中创建一个.d.ts文件,并使用declare module 'moduleName'来为第三方库声明类型。例如:
declare module 'some-npm-package' {
export function doSomething(param: string): void;
}
查找社区提供的类型声明文件:
有时候,即使官方没有提供类型定义,社区成员也可能已经为某些流行的库创建了类型定义文件。你可以访问如DefinitelyTyped这样的仓库寻找合适的类型定义文件。
使用@types包:
TypeScript社区维护了一个名为DefinitelyTyped的项目,它包含了大量非TypeScript库的类型定义。如果你要使用的库在这个项目中有对应的类型定义,那么可以通过安装相应的@types包来获得类型支持。例如,如果有一个名为example-library的库,你可以尝试安装@types/example-library。
忽略特定文件的类型检查:
如果某个库非常小或者你确定不会修改它的代码,可以选择性地忽略对这个库的类型检查。可以在导入该库的地方加上/// 注释来告诉TypeScript忽略这个库的类型检查。
贡献类型定义:
如果你发现某个库缺少类型定义,并且你有时间的话,可以考虑自己编写类型定义然后贡献给DefinitelyTyped项目,这样不仅能够帮助你自己,也能帮助其他开发者。
通过上述方法,你应该能够在使用那些没有TypeScript支持的NPM包时,仍然能够有效地利用TypeScript的优势。希望这些建议对你有所帮助!如果有更具体的问题或者需要进一步的帮助,请随时告诉我。
花影流年
not available when running the Angular CLI outside a workspace?
项目不是自己创建的, 是在网上下载的.
我在项目根目录运行 ng serve, 终端提示下面这个错误:
This command is not available when running the Angular CLI outside a workspace.
花影流年
Angular.js Dependency Injection 的实现原理是什么
The simplest way to get hold of the dependencies, is to assume that the function parameter names are the names of the dependencies.
function MyController($scope, greeter) {
...
}
Given a function the injector can infer the names of the service to inject by examining the function declaration and extracting the parameter names. In the above example $scope, and greeter are two services which need to be injected into the function.
上文是在Dependency Injection这篇Guide中截去的原文。其中讲到如果Controller需要某样服务,则只需在他构造函数的参数里添加并指定正确的名称就行了。像上面的例子里,Angular会自动寻找$scope和greeter这两个服务,并传递给函数。
但是令我不解的是,Angular是如何知道MyController签名(参数)的?和Function参数相关的变量似乎只有arguments,但这个变量只能在函数内部使用,在外部调用会返回null。
function ACtrl(paramA,paramB){}
ACtrl.arguments
//null
那么,Angular到底是如何知道函数签名(参数)的?
花影流年
如何去搭建一个完整的angularJS框架项目
如何去搭建一个完整的angularJS框架项目,是手动页面搭建还是怎么?路由什么如何配置
花影流年
angular中的自定义指令
minesweeper.directive('ngRightClick', function($parse) {
return function(scope, element, attrs) {
var fn = $parse(attrs.ngRightClick);
element.bind('contextmenu', function(event) {
scope.$apply(function() {
event.preventDefault();
fn(scope, {$event:event});
});
});
};
});
如上代码,解释说是自定义ngRightClick指令,但是首先不能理解它的意思,再一个自定义指令不应该是下面这种形式吗:
minesweeper.directive("mineGrid",function(){
return {
restrict:'E',
replace:false,
templateUrl:'./templates/mineGrid.html'
}
});
求指教
花影流年
是否有必要学习angular
说下自己的情况。
开发前端主要用bootstrap,jquery,ajax。效果动画表单验证什么的也是jq。
后台主要用thinkphp。
前段时间想搜一下更好的前端框架,看到angular。但是学习了一段时间感觉非常困惑。
那篇神问答也看了三四遍,主要的核心就是不要操作DOM。但是按照angular的写法,扩展每个html标签,这样对比jquery那种html和js分离的写法貌似没任何优势啊。
第二个就是数据双向绑定,感觉也是用处不大,不论是表单验证还是其它动画效果感觉jq无压力啊。
还有个疑问就是MVC,为什么不用tp的mvc,而要用angular在前端再分离一次,这样有什么好处呢,假如我要循环下的,常规用tp可以直接foreach,但是用angular就必须写成这样:
{{**}}
这样将数据写在js里面,sql出的数据怎么分配呢,岂不给自己找不自在?
那为什么那么多人在用angular,她到底好在哪里呢?
花影流年
为什么单页应用看起来很火,但都没有看到大厂们的产品在用?
现在HTML5很火,各种前端MVC,MVVC框架很火,framework7,angulerjs,react,vue.js这些现在几乎是前端工程师最喜欢折腾的东西了,这些东西打破了原来固有的一些思想,视图和功能必须分离,模块化,再加上HTML5的特性,使得现代web充满可能,网页终于不再是跳来跳去的了,有点APP的味道了。
但随之而来也有很多问题,比如性能,还有对后端开发的影响,原来模板渲染在主要后端处理,现在后端则主要侧重与接口的开发了。
扯远了,我想说为什么现在市面上见不到一个使用这些技术,单页的网页呢,手机淘宝,手机天猫,58同城,美团,饿了么,各大手机新闻门户,……,很多很多,都还是链接跳来跳去的普通网页,网上各种demo倒是多,但是为什么没有大厂用呢?
难道由于那些“问题”,这些东西只适合于做内部系统,后台管理的东西吗?不能普及,做那些流量大的网站,比如手机美团吗?
花影流年
协同工具Worktile 全站都是用的JS实现,具体是什么样的架构?
看到协同工具Worktile 说用node和angularjs(差不多全站逻辑都是由JS来控制)实现.
这样的网站架构具体是什么样子的? 什么优缺点?
后补:
Worktile CTO TerryLee 的文章: 团队协作工具Worktile技术架构揭秘
讲的比较详细
花影流年
ng-alain sf表单如何刷新部分表单?
我在change使用this["sf"].refreshSchema()刷新表单,发现refreshSchema()方法会把整个表单都重置,有什么方法能够只刷新一部分表单吗?还是需要在刷新前获取到表单的值,刷新之后重新赋值?具体怎么实现呢
花影流年
求助:请问有没有实现既可手工录入,又可模糊查询的下拉框的jq插件?
项目一直用select2作为下拉框的插件,可满足模糊查询,但需求还想要能够在下拉列表中没有选项时可以手工录入,一直找不到可以满足这两个条件的插件,求助各位。
花影流年
angular表单验证问题
angular表单验证,如何做到只验证部分表单元素,根据需求,不同的情况显示的表单元素不一样
花影流年
请教 TypeScript 中私有静态成员看和 ES 规范解决方案或 TS 相关的最新提案?
初学 TypeScript 遇到此问题:
静态属性修饰符 static 和私有类字段前缀 # 互斥。
我的方案(目前测试项目是基于 rollup 构建的):
rollup & Babel 生态支持伪 TypeScript【Done】
借助 Babel 的预设或者插件可以解决问题一,但这是会丧失 type check,这显然违背了使用 TS 的初衷,不到万不得已本人并不想采用此方案;
rollup & TypeScript【TODO】
使用了 rollup 的 TypeScript 插件,其中在 TS 编译之前转化代码的 before 钩子配置,我尝试使用 Babel 的编译功能作为 TS 编译的前置钩子,也就是在 TS 真正编译之前先让 Babel 转化 static #propName 语法,然后再让 TS 编译,目前是理论阶段,因为我的工厂函数失效了,不知道有没有大佬尝试过 before 转化这种 rollup 的 TS 插件配置,请问此思路是否存在可行性。
花影流年
求助:请问有没有实现既可手工录入,又可模糊查询的下拉框的jq插件?
项目一直用select2作为下拉框的插件,可满足模糊查询,但需求还想要能够在下拉列表中没有选项时可以手工录入,一直找不到可以满足这两个条件的插件,求助各位。
花影流年
angular13 无法卸载?
问题1:npm install -g @angular/cli 装了最新的angular 13,由于太新了导致我有些功能用不了,于是按照网上的教程卸载angular,最后一步删掉了@angular,重装低版本(npm install -g @angular/cli@8.3.0)之后,一直不识别ng命令,报错信息如下,google无果,请问各位大佬,这问题咋解决呢?
问题2:如果不删除C:\Users\YOU\AppData\Roaming\npm\node_modules@angular 目录,则执行卸载命令后,执行ng --version时一直显示angular 13.0版本,无法完全卸载angular。
删掉了@angular目录,然后重装低版本,就不识别ng命令了
说明:删掉了@angular目录,然后重装低版本,就不识别ng命令了
"https://wmprod.oss-cn-shanghai.aliyuncs.com/community/1724826589425_cS8o.jpg" (https://wmprod.oss-cn-shanghai.aliyuncs.com/community/1724826589425_cS8o.jpg)"https://wmprod.oss-cn-shanghai.aliyuncs.com/community/1724826643895_RIQr.jpg" (https://wmprod.oss-cn-shanghai.aliyuncs.com/community/1724826643895_RIQr.jpg)
卸载步骤:
npm uninstall -g angular-cli
npm uninstall --save-dev angular-cli
npm uninstall -g @angular/cli
npm cache clean (如果报错,执行强制清除缓存npm cache clean --force)
Delete the C:\Users\YOU\AppData\Roaming\npm\node_modules@angular folder.
花影流年
js中有什么办法能让对象进行排序呢?
后台返回了一个json对象,顺序是已经排好了的
"https://wmprod.oss-cn-shanghai.aliyuncs.com/community/1724826360054_KqEY.jpg" (https://wmprod.oss-cn-shanghai.aliyuncs.com/community/1724826360054_KqEY.jpg)
但是我用js像遍历数组那样去for in遍历这个对象时 结果和原对象却不一样了 查过资料后才知道js对象是无序的。。 那么有办法顺序遍历这个对象么? 或者怎么顺序得到原对象的属性?
但是我用js像遍历数组那样去for in遍历这个对象时 结果和原对象却不一样了 查过资料后才知道js对象是无序的。。 那么有办法顺序遍历这个对象么? 或者怎么顺序得到原对象的属性?
花影流年
vscode语法提示异常
请教一个问题,现在在一个ionic项目中引用了IonicSafeString,在我vscode上没问题,但是在同事的vscode上就会报错,vscode的版本还一样,node_modules删掉重下也不管用,这个可能是哪些原因啊?"https://wmprod.oss-cn-shanghai.aliyuncs.com/community/1724826170272_D7Mo.jpg" (https://wmprod.oss-cn-shanghai.aliyuncs.com/community/1724826170272_D7Mo.jpg)"https://wmprod.oss-cn-shanghai.aliyuncs.com/community/1724826202742_zjpK.jpg" (https://wmprod.oss-cn-shanghai.aliyuncs.com/community/1724826202742_zjpK.jpg)
花影流年
laravel 如何在不使用sanctum中间件在控制器中获取用户信息?
我有一个api,需要在控制器中获取用户信息
这个api需要在登录 或者 不登录的情况下都能访问
如果我不加上 auth:sanctum 中间件则无法通过Auth::check()来验证用户是否登录
没有加上中间件 auth:sanctum , Auth::check() 方法始终返回的是false
我想在控制器中来验证用户信息而不是在中间件中验证直接返回401
望大佬解答
花影流年
如何分析nginx 499超时,php-fpm慢日志是否有关联?
站点流量起来后nginx很多499超时,upstream_response_time基本都大于5s以上,php慢日志设置3s,但是只有少量慢日志,和499数量对不上。常态下请求时间稳定
环境:k8s、laravel5.5、php7.2、nginx、es、mysql,
php-fpm 配置静态25个进程
网站很多请求会有内部curl请求其他服务。
疑问:为什么499数量和php慢日志数量相差很大,应该怎么分析性能瓶颈找到问题?
花影流年
vue使用cryptojs加密 lumen使用aes解密,但失败了,有代码,如何解决?
function decrypt($encryptedData, $key,$iv) {
$decryptedData = openssl_decrypt(
base64_decode($encryptedData),
'AES-128-CBC',
$key,
OPENSSL_RAW_DATA,
$iv
);
if ($decryptedData === false) {
echo 'failed';
}
return $decryptedData;
}
vuejs方法
export function encryptionValue(value, key = 'E7D9B13077291073041EE0AD54EAD975', iv = '0000000000000000') {
value = value.toString()
key = CryptoJS.enc.Utf8.parse(key)
iv = CryptoJS.enc.Utf8.parse(iv)
const encrypted = CryptoJS.AES.encrypt(value, key, { iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 });
return encrypted.toString()
}
花影流年
Laravel 10 Composer 安装或更新依赖时出现错误的解决方案?
laravel10中使用
composer install或composer update
安装或更新依赖会出现所有依赖变成
"https://wmprod.oss-cn-shanghai.aliyuncs.com/b/comp/1724823830576_6C8r.jpg" (https://wmprod.oss-cn-shanghai.aliyuncs.com/b/comp/1724823830576_6C8r.jpg)
。
花影流年
我发现django的orm使用了数据库层面的外键,而laravel的多对多等关联就没有,django不用外键可以吗?
"https://wmprod.oss-cn-shanghai.aliyuncs.com/b/comp/1724823613729_QdhZ.jpg" (https://wmprod.oss-cn-shanghai.aliyuncs.com/b/comp/1724823613729_QdhZ.jpg)
花影流年
php-fpm进程cpu占用率过高,如何优化
服务器8核心16g内存,运行一个laravel开发的系统。性能表现如下:
"https://wmprod.oss-cn-shanghai.aliyuncs.com/community/1724822775060_9MHl.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/community/1724822775060_9MHl.png)
每个php-fpm进程占用了30%~60%的cpu。我们的另一个基于ci的php系统,每个php-fpm的cpu占用在5%以下。
请问php-fpm进程的cpu占用率正常吗?优化方向应该如何呢?
花影流年
jwt多账号登陆,后端多次生成token后,如何让旧token失效
jwt多账号登陆,后端多次生成后,如何让旧token失效?
花影流年
laravel 后端数据变化时前端页面自动刷新的问题?
使用laravel 做一个展示大屏项目,后台的数据变化时,如何让前端的页面自动刷新.我想到的办法是使用laravel livewire组件. 具体代码如下:
http/livewire/show.php(控制器代码)
use App\Zdrw;
use App\Djgz;
use App\Shgg;
use App\Sjjb;
class Show extends Component
{
public $zdrws;
public $djgzs;
public $shggs;
public $sjjbs;
public function mount()
{
$this->zdrws = Zdrw::all();
$this->djgzs = Djgz::all();
$this->shggs = Shgg::all();
$this->sjjbs = Sjjb::all();
}
public function render()
{
return view('livewire.show');
}
}
前端页面
views/home.blade.php
//这里按照文档添加了wie:poll
views/livewire/show.blade.php
ID
任务名称
牵头科室
责任人
完成时限
工作进度
@foreach($zdrws as $zdrw)
{{$zdrw->id}}
{{$zdrw->name}}
{{$zdrw->department}}
{{$zdrw->person}}
{{$zdrw->finish}}
{{$zdrw->status}}
@endforeach
后台数据变动时,删除\修改\添加, 前端数据都不自动变化,我哪里出问题了,应该怎么解决?请各位高手赐教,非常感谢
花影流年
laravel 如何让一个 controller method 既可以匿名访问,也可以身份认证后访问?
举例:
一篇新闻,匿名用户可以正常访问,已登录用户访问后会记录阅读历史。
这种情况下路由该怎么写的?
Route::middleware('guest')->group(function () {
Route::get('/news/{news}', [\App\Http\Controllers\Api\NewsController::class, 'show']);
});
花影流年
一个关于nuxt同时使用ssr和csr的时候api服务器的跨域如何配置
前端项目在服务器a,nuxt2写的,首页使用了ssr,其它页面csr,服务器配置
location / {
proxy_pass http://localhost:3000;
}
后端api在服务器b,使用laravel开发,其中加入了对服务器a开启的跨域中间件。
现在发现,访问项目时,首页没有渲染,F5刷新也没有,其他页面可以渲染,从其它页面切到首页时首页可以渲染,求解。
花影流年
如何在Laravel以编程的方式实现交互?
我想用编程的方式实现Artisan交互,就好像下图这样,在命令行需要输入两个yes,但是用编程的模式是怎么实现的呢?求指教!
"https://wmprod.oss-cn-shanghai.aliyuncs.com/community/1724821950399_8qg5.jpg" (https://wmprod.oss-cn-shanghai.aliyuncs.com/community/1724821950399_8qg5.jpg)
我这边的代码
Artisan::call( 'backup:restore', [
'--backup' => $filename,
] );
这样的话,会弹出错误
花影流年
php 类型转换问题是怎么样的
namespace app\facade;
use app\service\AdminService;
class TestFacade
{
function test()
{
/**
* @var AdminService $adminServcie
*/
$adminService = invoke(AdminService::class);
}
}
上面的代码是,我从容器里面实例化的一个类,AdminService,invoke返回的是一个mixed任意类型,这样我就出现了一个问题了。
如果我不写@var 标注,我的编辑器就无法识别这个$adminService 实例下的方法了。
请问如何将$adminService 转换成AdminServcie 类型!
$adminService = (AdminService)invoke(AdminService::class);
$adminService = (AdminService::class)invoke(AdminService::class);
// 这样写是错的
花影流年
Laravel如何上传文件
写文章的背景:最近失业在家,每天去图书馆阅读大量的书籍。
名句:
人这一生机会很多,重要的机会只有一个
创业成功绝对不是靠技术,而是靠市场
巨人公司的故事、企业助穷、Apple VS 诺亚机、微软如何崛起
如何减压 And 对抗焦虑
平面构成(对称与平衡,对比与调和)
情商课
1. 关切对方(就像父母对话孩子一样的温暖,天气冷不冷啊)
2. 学会道歉,有没有吓到你了 (对不起给你添麻烦了)
3. 共鸣 (那我们把空调开起来吧)
如下代码:
namespace App\Http\Controllers\Api\Air\v_1_0;
use App\Http\Controllers\Core\ApiController;
use App\Models\LoginLog;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use OSS\OssClient;
class FileController extends ApiController
{
public function uploadFile(Request $request)
{
$file = $request->file();
$ret = $this->_upload($file);
echo json_encode($ret);
exit;
}
protected function _upload($file)
{
$dir_name = empty($_GET['dir']) ? 'image' : trim($_GET['dir']);
$storage_path = config('upload.storage');
$webpath_path = config('upload.webpath');
$image_path = $dir_name . '/' . date("Y-m") . '/';
$app_url = env('APP_URL') . '/';
if (!$file) {
return array('error'=>1,'message'=>"文件上传失败,请检查后重试");
}
$ossConfig = config('oss.' . config('upload.ossflag'));
if($ossConfig['bucket_addr']) {
$app_url = $ossConfig['bucket_addr'];
}
foreach ($file as $k=>$v) {
$tmpName = $v->getPathName();
$fileExtension = $v->getClientOriginalExtension();
$filePath = md5_file($tmpName) . '.' . $fileExtension;
$file_size = $v->getSize();
if($file_size > config('upload.maxSize'))
{
return array('error'=>1,'message'=>"文件不可以超过50MB");
}
if (!in_array(strtolower($fileExtension),config('upload.allowExts')))
{
return array('error'=>1,'message'=>"文件类型不支持");
}
//上传成功后处理
if(config('oss.' . 'oss_open') == 1) {
$oss = new OssClient($ossConfig['access_key_id'], $ossConfig['access_key_secret'], $ossConfig['endpoint']);
$res = $oss->uploadFile($ossConfig['bucket'],$webpath_path . $image_path . $filePath,$v->getPathName());
if ($res)
{
$data['oss'] = 1;
$data['attach_url'] = $ossConfig['bucket_addr'] . $webpath_path . $image_path . $filePath;
} else {
$data['attach_url'] = $app_url . $webpath_path . $image_path . $filePath;
$data['oss'] = 0;
}
$data['time'] = time();
$attach_id = DB::table('attachment')->insertGetId($data);
$attach_array[] = $attach_id;
$attach_url[] = $data['attach_url'];
} else {
$data['oss'] = 0;
$data['attach_url'] = $app_url. $webpath_path . $image_path . $filePath;
$data['time'] = time();
$attach_id = DB::table('attachment')->insertGetId($data);
$attach_array[] = $attach_id;
$attach_url[] = $data['attach_url'];
}
if(!$data['oss'] || config('oss.' . 'is_delete') != 1)
{
$v->move($storage_path . $image_path, $filePath);
unset($data);
}
return array('error'=>0,'attach'=>$attach_array,'url'=>$attach_url[0],'url_arr'=>$attach_url);
}
}
}
花影流年
如何直接点击lumen的路由的控制器跳转到相关文件?
$router->group(['namespace'=>'\App\Http\Controllers','prefix' => 'api'], function () use ($router) {
$router->post('register', 'UserController@register');
$router->post('login', 'UserController@login');
$router->post('info', 'UserController@info');
$router->post('logout', 'UserController@logout');
});
laravel的路由可以使用Route::get('/user', [UserController::class, 'index']);
花影流年
laravel的with懒加载 如果相关记录不存在 如何返回空对象?
return Order::where('user_id', $id)->with(['user' => function ($query) {
return $query;
},'product'])->select()->get();如果product不存在会返回null。如何解决?