Thinkphp 图片上传

案例:广告的增删改查

步骤:

1引用 js

2 填写 input type=" file" 的id  

3 填写 url

4后台保存地址

5前台成功后的处理

 

广告添加页

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
<div class="modal-header no-padding">
    <div class="table-header">
        <i class="icon-lock"></i>
        <button type="button" class="close" data-dismiss="modal">×</button>
        添加广告
    </div>
</div>
 
<div class="modal-body overflow-visible">
    <label class="control-label pull-left" style="padding-right:20px;">类别</label>
    <select id="class_id"   name="class_id" class="left">
        <option value="">不限</option>
        <volist name="advertise_class" id="vo">
            <eq name="vo.id" value="$map.class_id">
                <option value="{$vo.id}" selected >{$vo.name}</option>
                <else />
                <option value="{$vo.id}" >{$vo.name}</option>
            </eq>
        </volist>
    </select>
</div>
 
<div class="modal-body overflow-visible">
    <div class="control-group">
        <label class="control-label" for="name">广告名称</label>
        <div class="controls">
            <input type="text" required="required" id="name" name="name" placeholder="广告名称"/>
        </div>
    </div>
 
    <div class="control-group">
        <label class="control-label" for="url">广告地址</label>
        <div class="controls">
            <input type="text" required="required" id="url" name="url"
                   placeholder="注意添加http://"/>
        </div>
    </div>
    <div class="control-group">
        <label class="control-label" for="Pic"  >广告图片</label>
        <div class="controls">
            <input type="file"  name="Pic" id="Pic"  style="display: none"   onchange="uploadFile();" />
            <label for="Pic">
            <img  id="image"  class="image" width="15%" height="15%" style="width: auto; height:80px;" src="__PUBLIC__/HomeStyle/images/photo.png"  >
            </label>
            <!--<input type="file"  id="image"  style="display: none"   onchange="uploadFile('{:U('Admin/Advertisement/image')}', 'imageCom','logo_success');" />-->
            <!--<label for="image">-->
            <!--<img  class="logo_success" width="13%" height="13%"  src="__PUBLIC__/HomeStyle/images/photo.png"  >-->
            <!--</label>-->
 
            <!--<input id="file0"  type="file" size="10" accept="image/*"  placeholder="点击上传"    onchange="uploadFile('{:U('Admin/Advertisement/image')}', 'file0','advertise_pic');" />-->
            <!--  <!–用for属性绑定file控件–>   -->
            <!--  <label for="file0">        -->
                 <!--<img id="pic" class="advertise_pic"  width="13%" height="13%" src="__PUBLIC__/HomeStyle/images/photo.png" alt=" " />  -->
            <!--  </label>   -->
        </div>
    </div>
 
    <div class="control-group">
        <label class="control-label" for="sort">排序</label>
        <div class="controls">
            <input type="text" required="required" id="sort" name="sort"
                   placeholder="数字越大越靠前"/>
        </div>
    </div>
 
    <div class="control-group">
        <label class="control-label" for="note">备注</label>
        <div class="controls" >
            <textarea type="text" style="height: 50px" cols="20" rows="10"  required="required" id="note" name="note" />
        </div>
    </div>
</div>
 
<div class="modal-footer">
    <button data-dismiss="modal" class="btn btn-small">
        <i class="icon-remove"></i>
        取消
    </button>
    <button type="button" class="btn btn-small btn-primary" onclick="$.doAdd('{:U('Admin/Advertisement/doAdd')}', this);">
        <i class="icon-ok"></i>确认
    </button>
</div>
<input id="pic_hidden" value="">
<script src="__PUBLIC__/HomeStyle/js/ajaxfileupload.js"></script>
<script type="text/javascript">
    //图片上传
    function uploadFile() {
        $.ajaxFileUpload({
            url: "{:U('Admin/Advertisement/upload')}"//请求控制器地址
            secureuri: false,  
            fileElementId: 'Pic'//input type=“file”标签的id
            dataType: 'json'//返回值类型
            success: function (data)  //服务器成功响应处理函数
            {
                if (data.code ==1) {
                    $('#pic_hidden').val(data.msg);
                    data.msg = data.msg + '?' + parseInt(Math.random() * 1000); //添加随机数
                    $('.image').attr('src', data.msg);
                } else {
                    alert(data.msg);
                }
            },
        })
    }
 
 
 
 
        jQuery(function($){
            $.extend({
                doAdd : function(url, obj)
                {
                    var obj = $(obj).parents('form');
 
                    $.ajax({
                        url : url,
                        type : 'get',
                        data : {
                                class_id:$('#class_id').val(),
                                name:$('#name').val(),
                                url:$('#url').val(),
                                pic:$('#pic_hidden').val(),
                                sort:$('#sort').val(),
                                note:$('#note').val()
                        },
                        success : function(res)
                        {
                            $.lagou.alert(res.msg, res.code, 2);
                            $.lagou.formHide();
                            location.reload();
                        }
                    });
                }
            });
        });
 
 
 
 
</script>

  

后台:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
<?php
/**广告管理
 * Created by PhpStorm.
 * User: Administrator
 * Date: 2017/5/3
 * Time: 17:33
 */
 
namespace Admin\Controller;
 
class AdvertisementController extends BaseController {
 
    protected $AdvertisementObj = null;
    protected $Advertise_class=null;
 
    public function __construct()
    {
        parent::__construct();
        $this->AdvertisementObj = M('Advertisement');
        $this->Advertise_class=M('Advertise_class');
    }
 
    /**
     *
     */
    public function index()
    {
        //获取页面中所有name标签的内容
        $map=I();
        //移除$map中所有可以转为false的值,如:false,0,‘0’,arrary(),null,'',
       // $a=array_filter($map);
         $a=$map;
        //名称
        if(!empty($a['name'])){
            $where['am.name']=array('LIKE','%'.$a['name'].'%');  //联表查询有两个name时,搜索条件要带表名。
        }
        //审核状态
        //empty 若变量已存在、非空字符串或者非零,则返回 false 值;反之返回 true。
        //换句话说,""、0、"0"、NULL、FALSE、array()、var $var; 以及没有任何属性的对象都将被认为是空的,如果 var 为空,则返回 TRUE。
        //if  0代表假  非0代表真
        if($a['state']!=""){
            $where['state']=array('EQ',$a['state']);
        }
        //类别
        if(!empty($a['class_id'])){
            $where['class_id']=array('EQ',$a['class_id']);
        }
        //var_dump($where);
        //分页
        $total=$this->AdvertisementObj->where($where)->count();//获取总页数
        $Page= new \Think\Pages($total,10);//显示10个页码
        $Page->setConfig('first','首页');
        $Page->setConfig('prev','上一页');
        $Page->setConfig('next','下一页');
        $Page->setConfig('last','尾页');
        $showPage = $Page->show();
        //搜索结果
        // $data=$this-> companyModel->where($where)->page(I('get.p',1),20)->order('create_time desc')->join('as com left join lg_city_category as city on com.city=city.id left join lg_trade as tr on com.trade=tr.id left join lg_basic_config_category as bc on com.stage=bc.id')->field('com.id as id,com.name as name,com.trade,city.name as city,tr.name as trade,bc.name as stage,com.state as state')-> select();
        $data=$this->AdvertisementObj->where($where)->page(I('get.p',1),10)->order('sort desc')->join('as am left join lg_advertise_class as ac on am.class_id=ac.id')->field('am.id,am.name,am.create_time,am.sort,am.state,ac.name as class_name') ->select();//get.p 表示页码,如果不存在则赋值1,每页20行。
        //var_dump($data);
        $advertise_category=$this->Advertise_class->order('sort desc')->select();
        //上一次搜索条件
        $this->assign('map',$a);
        $this->assign('advertise_class',$advertise_category);
        //分页
        $this->assign('page',$showPage);
        //列表
        $this->assign('data', $data);
        $this->display();
 
    }
 
    /**
     * 添加
     */
    public function add()
    {
        $advertise_category=$this->Advertise_class->order('sort desc')->select();
        $this->assign('advertise_class',$advertise_category);
        $this->display();
    }
 
    /**
     * 执行添加
     */
    public function doAdd()
    {
        $data=I();
        $data['create_time'] = time();
        $data['state'] = 1;
        $rs = $this->AdvertisementObj->add($data);
        if($rs){
            $msg['code'] = 1;
            $msg['msg'] = '添加成功';
        }else{
            $msg['code'] = 0;
            $msg['msg'] = '添加失败';
        }
        $this->ajaxReturn($msg);
    }
 
 
    //图片处理
    public function upload()
    {
        $upload = new \Think\Upload();// 实例化上传类
        $upload->maxSize   =    3145728 ;// 设置附件上传大小
        $upload->exts      =     array('jpg', 'gif', 'png', 'jpeg');// 设置附件上传类型
        $upload->savePath  =     './Advertisement/Pic/'; // 设置图片上传目录,默认在 Uploads文件下。
        $upload->saveName =     time().'_'.mt_rand(); //生成随机名称,如果想实现替换可以定位用户id: (string)session('user.id');
        $upload->saveExt = 'jpeg';
        $upload->subName = "";
        $upload->replace = true;
        $upload->hash = false;
        $info = $upload->upload();
        if(!$info){
            $msg['code']=0;
            $msg['msg']=$upload->getError();
        }else{
            $msg['code']=1;
            $msg['msg']= '/Uploads/Advertisement/Pic/'.$info['Pic']['savename'];  //想前台返回地址和新名称
        }
        $this->ajaxReturn($msg);
    }
    /**
     * 修改
     */
    public function edit()
    {
        $id = I('get.id');
        $info = $this->AdvertisementObj->where('id='.$id)->find();
        $advertise_category=$this->Advertise_class->order('sort desc')->select();
        $this->assign('advertise_class',$advertise_category);
        $this->assign('info', $info);
        $this->display();
    }
 
    /**
     * 修改
     */
    public function doEdit()
    {
            $data = I();
            $rs = $this->AdvertisementObj->save($data);
            if($rs===false){
                $msg['code'] = 0;
                $msg['msg'] = '修改失败';
            }else{
                $msg['code'] = 1;
                $msg['msg'] = '修改成功';
            }
            $this->ajaxReturn($msg);
 
    }
 
    /*
     * 删除
     */
    public function delete()
    {
        $id = I('get.id');
        $rs=$this->AdvertisementObj->where('id='.$id)->delete();
        if ($rs==0||$rs===false) {
            $msg['code'] = 0;
            $msg['msg'] = '删除失败';
        } else {
            $msg['code'] = 1;
            $msg['msg'] = '删除成功';
        }
        $this->ajaxReturn($msg);
    }
 
    //审核通过
    public function adopt(){
//        $this->ajaxReturn($_GET["id"]);
//        return;
        $id = I('get.id');
        $data['state']=1;
        $res = $this->AdvertisementObj->where('id='.$id)->save($data);
        if($res===false){
            $msg['code'] = 0;
            $msg['msg'] = '操作失败';
        }else{
            $msg['code'] = 1;
            $msg['msg'] = '操作成功';
        }
        $this->ajaxReturn($msg);
    }
 
    //审核拒绝
    public function refuse(){
        $id = I('get.id');
        $data['state']=2;
        $res = $this->AdvertisementObj->where('id='.$id)->save($data);
        if($res===false){
            $msg['code'] = 0;
            $msg['msg'] = '操作失败';
        }else{
            $msg['code'] = 1;
            $msg['msg'] = '操作成功';
        }
        $this->ajaxReturn($msg);
    }
 
 
 
}

  

修改页

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
<div class="modal-header no-padding">
    <div class="table-header">
        <i class="icon-lock"></i>
        <button type="button" class="close" data-dismiss="modal">×</button>
        添加广告
    </div>
</div>
 
<div class="modal-body overflow-visible">
    <label class="control-label pull-left" style="padding:0px 10px;">类别</label>
    <select id="class_id"   name="class_id" class="left">
        <option value="">不限</option>
        <volist name="advertise_class" id="vo">
            <eq name="vo.id" value="$info.class_id">
                <option  value="{$vo.id}" selected >{$vo.name}</option>
                <else />
                <option value="{$vo.id}" >{$vo.name}</option>
            </eq>
        </volist>
    </select>
</div>
 
<div class="modal-body overflow-visible">
    <div class="control-group">
        <label class="control-label" for="name">广告名称</label>
        <div class="controls">
            <input type="text" value="{$info.name}" required="required" id="name" name="name" placeholder="广告名称"/>
        </div>
    </div>
 
    <div class="control-group">
        <label class="control-label" for="url">广告地址</label>
        <div class="controls">
            <input type="text" required="required" id="url" name="url" value="{$info.url}"
                   placeholder="注意添加http://"/>
        </div>
    </div>
    <div class="control-group">
        <label class="control-label" for="Pic" >广告图片</label>
        <div class="controls">
            <input type="file"  name="Pic" id="Pic"  style="display: none"   onchange="uploadFile();" />
            <label for="Pic">
                <if condition="$info.pic eq ''">
                    <img  class="image" width="15%" height="15%" style="width: auto; height:80px;" src="__PUBLIC__/HomeStyle/images/photo.png"  >
                    <else/>
                        <img  id="image"  class="image" width="15%" height="15%" style="width: auto; height:80px;" src="{$info.pic}"  >
                </if>
            </label>
        </div>
    </div>
 
    <div class="control-group">
        <label class="control-label" for="sort">排序</label>
        <div class="controls">
            <input type="text" required="required" id="sort" name="sort" value="{$info.sort}"
                   placeholder="数字越大越靠前"/>
        </div>
    </div>
 
    <div class="control-group">
        <label class="control-label" for="note">备注</label>
        <div class="controls" >
            <textarea type="text" style="height: 50px" cols="20" rows="10"  required="required" id="note"  name="note" >{$info.note}</textarea>
        </div>
    </div>
</div>
 
<div class="modal-footer">
    <button data-dismiss="modal" class="btn btn-small">
        <i class="icon-remove"></i>
        取消
    </button>
    <button type="button" class="btn btn-small btn-primary" onclick="doEdit();">
        <i class="icon-ok"></i>确认
    </button>
</div>
<input id="pic_hidden" value="">
<script src="__PUBLIC__/HomeStyle/js/ajaxfileupload.js"></script>
<script type="text/javascript">
    //图片上传
    function uploadFile() {
        $.ajaxFileUpload({
            url: "{:U('Admin/Advertisement/upload')}",
            secureuri: false,
            fileElementId: 'Pic',
            dataType: 'json',
            success: function (data)  //服务器成功响应处理函数
            {
                if (data.code ==1) {
                    $('#pic_hidden').val(data.msg);
                    data.msg = data.msg + '?' + parseInt(Math.random() * 1000);
                    $('.image').attr('src', data.msg);
                } else {
                    alert(data.msg);
                }
            },
        })
    }
 
            function  doEdit()
            {
                var adv_class_id = $("#class_id").find("option:selected").attr("value");
                $.ajax({
                    url : "{:U('Admin/Advertisement/doEdit')}",
                    type : 'post',
                    data : {
                        id:{$info.id},
                        class_id:adv_class_id,
                        name:$('#name').val(),
                        url:$('#url').val(),
                        pic:$('#pic_hidden').val(),
                        sort:$('#sort').val(),
                        note:$('#note').val()
                    },
                    success : function(res)
                    {
                        //alert(res);
                        $.lagou.alert(res.msg, res.code, 2);
                        $.lagou.formHide();
                        location.reload();
                    }
                });
            }
 
 
 
</script>

  

 

列表页

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
<extend name="Public/base" />
 
 
{// 导航}
<block name="breadcrumb">
<li class="active">广告管理</li>
</block>
 
{// 左侧菜单}
<block name="sidebar">
    <include file="Public/sidebar" nav="advertise"/>
</block>
 
{// 主体}
<block name="main">
<div class="row-fluid">
 
    <h3 class="header blue lighter smaller">
        <form action="{:U('Admin/Advertisement/index')}" method="get">
            <div class="dataTables_wrapper">
                <div class="grid_conent" id="m_search_div">
                    <div class="grid" style="width:28%">
                        <label class="control-label pull-left">广告名称:</label>
                        <input name="name" value="{$map.name}" type="text" id="search_name" class="pull-left" />
                    </div>
                    <div class="grid" style="width: 28%;"  >
                        <label class="control-label pull-left">审核状态:</label>
                        <select name="state" class="pull-left">
                            <option value="">不限</option>
                            <option value="0" <?php if($map['state']=='0'):?> selected="selected"<?php endif;?> >待审核</option>
                            <option value="1" <?php if($map['state']=='1'):?>selected="selected" <?php endif;?> >已通过</option>
                            <option value="2" <?php if($map['state']=='2'):?>selected="selected"<?php endif;?> >已拒绝</option>
                        </select>
 
                    </div>
                    <div class="grid" style="width:auto;">
                        <label class="control-label pull-left" style="padding-left:26px;">类别:</label>
                        <select name="class_id" class="left">
                            <option value="">不限</option>
                            <volist name="advertise_class" id="vo">
                                <eq name="vo.id" value="$map.class_id">
                                    <option value="{$vo.id}" selected >{$vo.name}</option>
                                    <else />
                                    <option value="{$vo.id}" >{$vo.name}</option>
                                </eq>
                            </volist>
                        </select>
                    </div>
                    <div class="add_link" style=" width: auto; float: right;">
                        <button class="btn btn-primary btn-small" onclick="$.lagou.formShow('{:U('Admin/Advertisement/add')}');" type="button"><i class="icon-plus"></i>添加广告</button>
                    </div>
                    <div style="width:auto; float: right; padding-top:1px; "><button type="submit" class="btn btn-primary btn-small pull-left" id="search_submit"><i ></i>搜索</button></div>
 
                </div>
            </div>
        </form>
    </h3>
    <div class="table-header">广告列表</div>
    <div class="dataTables_wrapper" role="grid">
    <table id="data_table" class="table table-striped table-bordered table-hover" style="margin-bottom:0px;">
        <thead>
            <tr>
                <th>广告名称</th>
                <th>创建时间</th>
                <th>排序</th>
                <th>类别</th>
                <th>审核状态</th>
                <th>审核</th>
                <th>操作</th>
            </tr>
        </thead>
        <tbody>
            <?php foreach ($data as $key => $value): ?>
                <tr>
                    <td>{$value.name}</td>
                    <td>{$value.create_time|date="Y-m-d H:i", ###}</td>
                    <td>{$value.sort}</td>
                    <td>{$value.class_name}</td>
                    <td><eq name="value.state" value="0"><i class="waitting">等待审核</i><else/><eq name="value.state" value="1">已通过<else/> <eq name="value.state" value="2"><i class="red">已拒绝</i><else/> </eq> </eq></eq></td>
                    <td>
                        <div class="hidden-phone visible-desktop action-buttons">
                            <a href="javascript:;" onclick="$.adopt('{:U('Admin/Advertisement/adopt', array('id'=>$value['id']))}');" class="green"  >
                                <i>通过</i>
                            </a>
                            <a href="javascript:;" onclick="$.refuse('{:U('Admin/Advertisement/refuse', array('id'=>$value['id']))}');" class="red" >
                                <i>拒绝</i>
                            </a>
                        </div>
                    </td>
                    <td>
                        <div class="hidden-phone visible-desktop action-buttons">
                            <a href="javascript:;" onclick="$.lagou.formShow('{:U('Admin/Advertisement/edit', array('id'=>$value['id']))}');" class="blue tooltip-info no-hover-underline" data-rel="tooltip" data-original-title="编辑资料">
                                <i class="icon-pencil bigger-130"></i>
                            </a>
                            <a href="javascript:;" onclick="$.del('{:U('Admin/Advertisement/delete', array('id'=>$value['id']))}');" class="red tooltip-error no-hover-underline" data-rel="tooltip" data-original-title="删除"><i class="icon-trash bigger-130"></i></a>
                        </div>
                    </td>
                </tr>
            <?php endforeach ?>
        </tbody>
    </table>
        <!-- 分页 -->
        <div class="row-fluid">
            <div class="page">{$page}</div>
        </div>
      </div>
    </div>
 
</block>
 
{// js}
<block name="js">
 
 
    <script type="text/javascript">
 
            jQuery(function($) {
                // 这就是全选按钮
                $('table th input:checkbox').on('click' , function(){
                    var that = this;
                    $(this).closest('table').find('tr > td:first-child input:checkbox')
                    .each(function(){
                        this.checked = that.checked;
                        $(this).closest('tr').toggleClass('selected');
                    });
                });
                 
                $.extend({
 
                    action : function(url, obj)
                    {
                        var obj = $(obj).parents('form');
 
                        $.ajax({
                            url : url,
                            type : 'get',
                            data : obj.serialize(),
                            success : function(res)
                            {
                                $.lagou.alert(res.msg, res.code, 2);
                                $.lagou.formHide();
                                location.reload();
                            }
                        });
                    },
 
                    del : function(url)
                    {
 
                        $.lagou.confirm('确认删除吗?', function(res){
                            if (res) {
                                $.get(url, function(response){
                                    //alert(response);
                                    $.lagou.alert(response.msg, response.code, 2);
                                    location.reload();
                                });
                            }
                        });
                    },
                    //通过
                    adopt : function(url)
                    {
                        $.lagou.confirm('确定要通过吗?', function(res){
                            if (res) {
                                $.get(url, function(response){
                                    $.lagou.alert(response.msg, response.code, 2);
                                    location.reload();
                                });
                            }
                        });
                    },
                    //拒绝
                    refuse : function(url)
                    {
                        $.lagou.confirm('确定拒绝吗?', function(res){
                            if (res) {
                                $.get(url, function(response){
                                    $.lagou.alert(response.msg, response.code, 2);
                                    location.reload();
                                });
                            }
                        });
                    }
 
 
                });
            })
        </script>
</block>

  

posted @   hao_1234_1234  阅读(198)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示