{"id":821,"date":"2025-06-12T00:27:54","date_gmt":"2025-06-11T16:27:54","guid":{"rendered":"https:\/\/www.zhaozhao123.cn\/php\/php-application-manual\/laravel\/821.html"},"modified":"2025-06-12T00:27:54","modified_gmt":"2025-06-11T16:27:54","slug":"%e5%a6%82%e4%bd%95%e5%9c%a8-laravel-%e4%b8%ad%e4%b8%8a%e4%bc%a0%e5%92%8c%e9%aa%8c%e8%af%81%e6%96%87%e4%bb%b6","status":"publish","type":"my1js","link":"https:\/\/www.zhaozhao123.cn\/php\/my1js\/821.html","title":{"rendered":"\u5982\u4f55\u5728 Laravel \u4e2d\u4e0a\u4f20\u548c\u9a8c\u8bc1\u6587\u4ef6"},"content":{"rendered":"<div class=\"wp-block-columns p-0 border is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<div class=\"wp-block-columns px-4 py-3 border-bottom has-background is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\" style=\"background:linear-gradient(243deg,rgb(238,238,238) 0%,rgba(58,166,242,0.15) 100%)\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<div class=\"wp-block-group is-nowrap is-layout-flex wp-container-core-group-is-layout-6c531013 wp-block-group-is-layout-flex\">\r\n<figure class=\"wp-block-image size-thumbnail is-resized is-style-rounded is-style-rounded--1\"><img decoding=\"async\" src=\"https:\/\/www.zhaozhao123.cn\/myitems\/images\/sites16\/2025\/06\/dyA-1-400x300.jpg\" alt=\"Bug&#32534;&#35793;&#29422;\" class=\"wp-image-1842\" style=\"object-fit:cover;width:30px;height:30px\"><\/figure>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading my-0\" style=\"font-size:clamp(0.875rem, 0.875rem + ((1vw - 0.2rem) * 0.175), 1rem);\">Bug&#32534;&#35793;&#29422;<\/h2>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n\r\n\r\n\r\n<div class=\"wp-block-columns px-xl-5 px-4 py-xl-4 py-3 is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<p>&#22312; Laravel &#20013;&#19978;&#20256;&#21644;&#39564;&#35777;&#25991;&#20214;&#26159;&#19968;&#39033;&#24120;&#35265;&#30340;&#38656;&#27714;&#12290;&#20197;&#19979;&#26159;&#19968;&#20010;&#35814;&#32454;&#30340;&#25351;&#21335;&#65292;&#24110;&#21161;&#20320;&#22312;&#39033;&#30446;&#20013;&#23454;&#29616;&#36825;&#19968;&#28857;&#12290;<\/p>\n<h3>1. &#23433;&#35013;&#24517;&#35201;&#30340;&#21253;<\/h3>\n<p>&#39318;&#20808;&#65292;&#30830;&#20445;&#20320;&#24050;&#32463;&#23433;&#35013;&#20102; <code>laravel\/framework<\/code> &#21644; <code>intervention\/image<\/code> &#21253;&#65292;&#20197;&#20415;&#22788;&#29702;&#25991;&#20214;&#19978;&#20256;&#21644;&#22270;&#20687;&#25805;&#20316;&#12290;<\/p>\n<pre><code class=\"language-bash\">composer require intervention\/image<\/code><\/pre>\n<h3>2. &#37197;&#32622;&#25991;&#20214;&#19978;&#20256;<\/h3>\n<p>&#22312; <code>config\/filesystems.php<\/code> &#25991;&#20214;&#20013;&#37197;&#32622;&#25991;&#20214;&#19978;&#20256;&#30340;&#39537;&#21160;&#12290;&#20320;&#21487;&#20197;&#36873;&#25321;&#20351;&#29992;&#26412;&#22320;&#23384;&#20648;&#12289;S3 &#31561;&#12290;<\/p>\n<pre><code class=\"language-php\">return [\n    'default' =&gt; env('FILESYSTEM_DRIVER', 'local'),\n\n    'disks' =&gt; [\n        'local' =&gt; [\n            'driver' =&gt; 'local',\n            'root'   =&gt; storage_path('app\/public'),\n        ],\n\n        'public' =&gt; [\n            'driver' =&gt; 'local',\n            'root'   =&gt; public_path(),\n            'url'    =&gt; env('APP_URL').'\/storage',\n            'disk'   =&gt; 'local',\n            'visibility' =&gt; 'public',\n        ],\n    ],\n];<\/code><\/pre>\n<h3>3. &#21019;&#24314;&#25511;&#21046;&#22120;<\/h3>\n<p>&#21019;&#24314;&#19968;&#20010;&#26032;&#30340;&#25511;&#21046;&#22120;&#26469;&#22788;&#29702;&#25991;&#20214;&#19978;&#20256;&#21644;&#39564;&#35777;&#12290;<\/p>\n<pre><code class=\"language-bash\">php artisan make:controller FileController<\/code><\/pre>\n<h3>4. &#32534;&#36753;&#25511;&#21046;&#22120;&#26041;&#27861;<\/h3>\n<p>&#22312; <code>FileController<\/code> &#20013;&#32534;&#20889;&#26041;&#27861;&#26469;&#22788;&#29702;&#25991;&#20214;&#19978;&#20256;&#21644;&#39564;&#35777;&#12290;<\/p>\n<pre><code class=\"language-php\">use IlluminateHttpRequest;\nuse IlluminateSupportFacadesStorage;\n\nclass FileController extends Controller\n{\n    public function upload(Request $request)\n    {\n        \/\/ &#26816;&#26597;&#35831;&#27714;&#26159;&#21542;&#21253;&#21547;&#25991;&#20214;\n        if ($request-&gt;hasFile('file')) {\n            \/\/ &#33719;&#21462;&#25991;&#20214;&#21517;\n            $filename = time() . '.' . $request-&gt;file('file')-&gt;getClientOriginalExtension();\n\n            \/\/ &#20445;&#23384;&#25991;&#20214;&#21040;&#25351;&#23450;&#36335;&#24452;\n            $path = Storage::put('uploads\/' . $filename, file_get_contents($request-&gt;file('file')));\n\n            if ($path) {\n                return response()-&gt;json([\n                    'message' =&gt; 'File uploaded successfully.',\n                    'path' =&gt; asset('storage\/uploads\/' . $filename),\n                ]);\n            } else {\n                return response()-&gt;json(['error' =&gt; 'Failed to upload file.'], 500);\n            }\n        } else {\n            return response()-&gt;json(['error' =&gt; 'No file was selected.'], 400);\n        }\n    }\n\n    public function validate(Request $request)\n    {\n        \/\/ &#20351;&#29992; Validator &#36827;&#34892;&#25991;&#20214;&#39564;&#35777;\n        $validator = Validator::make($request-&gt;all(), [\n            'file' =&gt; ['required', 'image'],\n        ]);\n\n        if ($validator-&gt;fails()) {\n            return response()-&gt;json(['errors' =&gt; $validator-&gt;errors()], 422);\n        }\n\n        \/\/ &#22788;&#29702;&#25991;&#20214;&#19978;&#20256;&#36923;&#36753;&#65288;&#22914;&#19978;&#65289;\n\n        return response()-&gt;json(['success' =&gt; true]);\n    }\n}<\/code><\/pre>\n<h3>5. &#21019;&#24314;&#36335;&#30001;<\/h3>\n<p>&#22312; <code>routes\/web.php<\/code> &#25991;&#20214;&#20013;&#23450;&#20041;&#36335;&#30001;&#12290;<\/p>\n<pre><code class=\"language-php\">use AppHttpControllersFileController;\n\nRoute::post('\/upload', [FileController::class, 'upload']);\nRoute::post('\/validate', [FileController::class, 'validate']);<\/code><\/pre>\n<h3>6. &#27979;&#35797;&#19978;&#20256;&#21151;&#33021;<\/h3>\n<p>&#20351;&#29992; Postman &#25110;&#20219;&#20309; HTTP &#23458;&#25143;&#31471;&#24037;&#20855;&#27979;&#35797; <code>\/upload<\/code> &#36335;&#30001;&#12290;<\/p>\n<ul>\n<li><strong>POST \/upload<\/strong>\n<ul>\n<li>&#35831;&#27714;&#22836;&#65306;Content-Type: multipart\/form-data<\/li>\n<li>&#35831;&#27714;&#20307;&#65306;\n<pre><code class=\"language-form-data\">file=@\/path\/to\/your\/file.jpg<\/code><\/pre><\/li>\n<\/ul><\/li>\n<\/ul>\n<h3>7. &#27979;&#35797;&#39564;&#35777;&#21151;&#33021;<\/h3>\n<p>&#20351;&#29992; Postman &#25110;&#20219;&#20309; HTTP &#23458;&#25143;&#31471;&#24037;&#20855;&#27979;&#35797; <code>\/validate<\/code> &#36335;&#30001;&#12290;<\/p>\n<ul>\n<li><strong>POST \/validate<\/strong>\n<ul>\n<li>&#35831;&#27714;&#22836;&#65306;Content-Type: application\/json<\/li>\n<li>&#35831;&#27714;&#20307;&#65306;\n<pre><code class=\"language-json\">{\n\"file\": \"@\/path\/to\/your\/file.jpg\"\n}<\/code><\/pre><\/li>\n<\/ul><\/li>\n<\/ul>\n<p>&#36890;&#36807;&#20197;&#19978;&#27493;&#39588;&#65292;&#20320;&#21487;&#20197;&#22312; Laravel &#20013;&#25104;&#21151;&#23454;&#29616;&#25991;&#20214;&#19978;&#20256;&#21644;&#39564;&#35777;&#21151;&#33021;&#12290;<\/p>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n<\/div><div class=\"wp-block-columns p-0 border is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<div class=\"wp-block-columns px-4 py-3 border-bottom has-background is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\" style=\"background:linear-gradient(243deg,rgb(238,238,238) 0%,rgba(58,166,242,0.15) 100%)\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<div class=\"wp-block-group is-nowrap is-layout-flex wp-container-core-group-is-layout-6c531013 wp-block-group-is-layout-flex\">\r\n<figure class=\"wp-block-image size-thumbnail is-resized is-style-rounded is-style-rounded--2\"><img decoding=\"async\" src=\"https:\/\/www.zhaozhao123.cn\/myitems\/images\/sites16\/2025\/06\/zp-400x300.jpg\" alt=\"&#40657;&#26495;Bug&#35762;&#24072;\" class=\"wp-image-1849\" style=\"object-fit:cover;width:30px;height:30px\"><\/figure>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading my-0\" style=\"font-size:clamp(0.875rem, 0.875rem + ((1vw - 0.2rem) * 0.175), 1rem);\">&#40657;&#26495;Bug&#35762;&#24072;<\/h2>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n\r\n\r\n\r\n<div class=\"wp-block-columns px-xl-5 px-4 py-xl-4 py-3 is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<body><h2>&#20171;&#32461;<\/h2><p>&#22312;&#26412;&#25945;&#31243;&#20013;&#65292;&#25105;&#20204;&#23558;&#28145;&#20837;&#25506;&#35752;&#19978;&#20256;&#21644;&#39564;&#35777;&#25991;&#20214;&#22312;Laravel&#24212;&#29992;&#31243;&#24207;&#20013;&#30340;&#20869;&#37096;&#24037;&#20316;&#21407;&#29702;&#12290;Laravel&#20316;&#20026;&#19968;&#27454;&#24378;&#22823;&#30340;MVC&#26694;&#26550;&#65292;&#25552;&#20379;&#20102;&#19968;&#31181;&#30452;&#35266;&#19988;&#23433;&#20840;&#30340;&#26041;&#27861;&#26469;&#22788;&#29702;&#25991;&#20214;&#19978;&#20256;&#65292;&#36825;&#23545;&#20110;&#20170;&#22825;&#30340;&#20114;&#21160;Web&#24212;&#29992;&#33267;&#20851;&#37325;&#35201;&#12290;&#26080;&#35770;&#24744;&#22788;&#29702;&#30340;&#26159;&#22270;&#20687;&#12289;&#25991;&#26723;&#36824;&#26159;&#22810;&#23186;&#20307;&#25991;&#20214;&#65292;&#30830;&#20445;&#36825;&#19968;&#28857;&#23545;&#20110;&#23454;&#29616;&#33391;&#22909;&#30340;&#29992;&#25143;&#20307;&#39564;&#24182;&#20445;&#25345;&#25968;&#25454;&#23436;&#25972;&#24615;&#38750;&#24120;&#37325;&#35201;&#12290;<\/p><p>&#22312;&#24320;&#22987;&#20043;&#21069;&#65292;&#35831;&#30830;&#20445;&#24744;&#30340;&#26426;&#22120;&#19978;&#24050;&#32463;&#23433;&#35013;&#20102;Laravel&#12290;&#22914;&#26524;&#38656;&#35201;&#24110;&#21161;&#36827;&#34892;&#23433;&#35013;&#65292;&#35831;&#21442;&#38405;&#27492;&#25945;&#31243;&#12290;&#19968;&#26086;&#23433;&#35013;&#23436;&#25104;&#65292;&#21487;&#20197;&#21019;&#24314;&#19968;&#20010;&#26032;&#30340;Laravel&#39033;&#30446;&#65292;&#25110;&#32773;&#22312;&#29616;&#26377;&#39033;&#30446;&#20013;&#35774;&#32622;&#29615;&#22659;&#65292;&#20197;&#20415;&#19978;&#20256;&#21644;&#39564;&#35777;&#25991;&#20214;&#12290;<\/p><h2>&#25991;&#20214;&#19978;&#20256;&#30340;&#22522;&#26412;&#27010;&#24565;&#12290;<\/h2><p>&#22312;Laravel&#20013;&#19978;&#20256;&#25991;&#20214;&#26102;&#65292;&#20320;&#38656;&#35201;&#20808;&#23450;&#20041;&#19968;&#20010;&#36335;&#30001;&#24182;&#21019;&#24314;&#19968;&#20010;&#25511;&#21046;&#22120;&#26041;&#27861;&#26469;&#22788;&#29702;&#25991;&#20214;&#23384;&#20648;&#12290;&#39318;&#20808;&#65292;&#25171;&#24320;&#30456;&#24212;&#30340;&#25511;&#21046;&#22120;&#25991;&#20214;&#12290;<code>web.php<\/code>&#25991;&#20214;&#22312;&#20869;&#12290;<code>routes<\/code>&#30446;&#24405;&#24182;&#28155;&#21152;&#20197;&#19979;&#36335;&#30001;&#65292;&#25351;&#21521;&#19968;&#20010;&#65306;<code>FileUploadController<\/code>: &#22909;&#30340;&#65292;&#35831;&#25552;&#20379;&#38656;&#35201;&#32763;&#35793;&#30340;&#20869;&#23481;&#12290;<\/p><pre><code>Route::post('\/upload', 'FileUploadController@store');<\/code><\/pre><p>&#25509;&#19979;&#26469;&#65292;&#22914;&#26524;&#19981;&#23384;&#22312;&#23545;&#24212;&#30340;&#25511;&#21046;&#22120;&#65292;&#21017;&#21019;&#24314;&#23427;&#65292;&#24182;&#28155;&#21152;&#12290;<code>store<\/code>&#26041;&#27861;&#65306;<\/p><pre><code>php artisan make:controller FileUploadController<\/code><\/pre><p>&#35831;&#25552;&#20379;&#38656;&#35201;&#32534;&#36753;&#30340;&#20869;&#23481;&#65292;&#25105;&#26469;&#24110;&#21161;&#24744;&#36827;&#34892;&#20462;&#25913;&#21644;&#28070;&#33394;&#12290;<code>FileUploadController<\/code>&#35831;&#25552;&#20379;&#38656;&#35201;&#32763;&#35793;&#30340;&#20869;&#23481;&#12290;<\/p><pre><code>public function store(Request $request)\n{\n    if($request-&gt;hasFile('file')) {\n        $request-&gt;file-&gt;store('public\/files');\n        return 'File uploaded successfully';\n    }\n    return 'No file selected';\n}\n<\/code><\/pre><p>&#30830;&#20445;&#22312;&#35270;&#22270;&#20013;&#26377;&#25991;&#20214;&#36755;&#20837;&#65292;&#19988;&#34920;&#21333;&#20855;&#26377; enctype=&#8221;multipart\/form-data&#8221; &#30340;&#23646;&#24615;&#12290;<code>enctype=\"multipart\/form-data\"<\/code>&#19978;&#20256;&#25991;&#20214;&#26102;&#65292;&#38656;&#35201;&#21738;&#20123;&#20449;&#24687;&#65306;<\/p><pre><code>&lt;form action=\"\/upload\" method=\"post\" enctype=\"multipart\/form-data\"&gt;\n    @csrf\n    &lt;input type=\"file\" name=\"file\"&gt;\n    &lt;input type=\"submit\" value=\"Upload\"&gt;\n&lt;\/form&gt;\n<\/code><\/pre><h2>&#28155;&#21152;&#39564;&#35777;<\/h2><p>&#39564;&#35777;&#25991;&#20214;&#19978;&#20256;&#30340;&#23433;&#20840;&#24615;&#21644;&#31526;&#21512;&#24212;&#29992;&#30340;&#20934;&#21017;&#33267;&#20851;&#37325;&#35201;&#12290;Laravel &#36890;&#36807;&#20869;&#32622;&#21151;&#33021;&#25552;&#20379;&#20102;&#19968;&#31181;&#31616;&#21333;&#30340;&#26041;&#27861;&#26469;&#39564;&#35777;&#25991;&#20214;&#12290;&#20462;&#25913;&#20102;&#12290;<code>store<\/code>&#23545;&#19981;&#36215;&#65292;&#25105;&#26080;&#27861;&#29702;&#35299;&#36825;&#21477;&#35805;&#30340;&#21547;&#20041;&#12290;<code>FileUploadController<\/code>&#28155;&#21152;&#39564;&#35777;&#36923;&#36753;&#65306;<\/p><pre><code>public function store(Request $request)\n{\n    $validatedData = $request-&gt;validate([\n        'file' =&gt; 'required|file|max:2048',\n    ]);\n\n    if($request-&gt;file('file')-&gt;isValid()) {\n        $validatedData['file']-&gt;store('public\/files');\n        return 'File uploaded and validated successfully';\n    }\n    return 'File is not valid';\n}\n<\/code><\/pre><p>&#36825;&#20010;&#20195;&#30721;&#26816;&#26597;&#25991;&#20214;&#26159;&#21542;&#23384;&#22312;&#12289;&#30830;&#23454;&#26159;&#25991;&#20214;&#65292;&#19988;&#22823;&#23567;&#19981;&#36229;&#36807;2MB&#65288;2&#20806;&#23383;&#33410;&#65289;&#12290;&#24744;&#21487;&#20197;&#26681;&#25454;&#38656;&#35201;&#33258;&#23450;&#20041;&#39564;&#35777;&#35268;&#21017;&#65292;&#21442;&#32771;Laravel&#30340;&#39564;&#35777;&#25991;&#26723;&#12290;<\/p><h2>&#39640;&#32423;&#25991;&#20214;&#39564;&#35777;&#21644;&#22788;&#29702;<\/h2><p>Laravel&#30340;&#39564;&#35777;&#31995;&#32479;&#38750;&#24120;&#20808;&#36827;&#12290;&#22914;&#26524;&#20320;&#38656;&#35201;&#30830;&#20445;&#21482;&#19978;&#20256;&#29305;&#23450;&#31867;&#22411;&#30340;&#25991;&#20214;&#65292;&#21487;&#20197;&#24456;&#23481;&#26131;&#22320;&#25193;&#23637;&#39564;&#35777;&#35268;&#21017;&#12290;<\/p><pre><code>'file' =&gt; 'required|mimes:jpg,png,pdf,docx|max:4096',\n<\/code><\/pre><p>&#36825;&#26465;&#32447;&#30830;&#20445;&#25991;&#20214;&#31526;&#21512;&#25351;&#23450;&#30340;MIME&#31867;&#22411;&#20043;&#19968;&#65292;&#19988;&#19981;&#36229;&#36807;4MB&#12290;<\/p><p>&#26377;&#26102;&#20505;&#65292;&#24744;&#20063;&#21487;&#33021;&#24076;&#26395;&#22312;&#19978;&#20256;&#25991;&#20214;&#26102;&#23545;&#23427;&#20204;&#36827;&#34892;&#37325;&#21629;&#21517;&#65292;&#20197;&#38450;&#27490;&#35206;&#30422;&#25110;&#26356;&#22909;&#22320;&#32452;&#32455;&#12290;&#24744;&#21487;&#20197;&#22312;&#27492;&#36807;&#31243;&#20013;&#23454;&#29616;&#36825;&#19968;&#28857;&#12290;&#20363;&#22914;&#65306;<\/p><pre><code>$fileName = time().'_'.$request-&gt;file-&gt;getClientOriginalName();\n$request-&gt;file-&gt;storeAs('public\/files', $fileName);\n<\/code><\/pre><p>&#32467;&#21512;&#36825;&#20123;&#26041;&#27861;&#65292;&#24744;&#23558;&#33021;&#22815;&#26356;&#22909;&#22320;&#25511;&#21046;&#19978;&#20256;&#21040;&#24744;&#30340;Web&#24212;&#29992;&#31243;&#24207;&#20013;&#30340;&#25991;&#20214;&#65292;&#24182;&#20351;&#24744;&#21487;&#20197;&#23454;&#29616;&#26356;&#24378;&#22823;&#30340;&#21151;&#33021;&#65292;&#20197;&#28385;&#36275;&#24744;&#30340;&#38656;&#27714;&#12290;<\/p><h2>&#32467;&#35770;&#12290;<\/h2><p>&#32508;&#19978;&#25152;&#36848;&#65292;Laravel &#20013;&#25991;&#20214;&#19978;&#20256;&#21644;&#39564;&#35777;&#30340;&#23454;&#29616;&#21487;&#20197;&#24555;&#36895;&#19988;&#39640;&#24230;&#23450;&#21046;&#21270;&#12290;&#36825;&#20123;&#22522;&#30784;&#20351;&#24320;&#21457;&#20154;&#21592;&#33021;&#22815;&#33258;&#20449;&#22320;&#22788;&#29702;&#25991;&#20214;&#25968;&#25454;&#65292;&#21516;&#26102;&#20445;&#25345;&#23433;&#20840;&#24615;&#21644;&#25928;&#29575;&#12290;&#38543;&#30528; Laravel &#30340;&#19981;&#26029;&#36827;&#27493;&#65292;&#24320;&#21457;&#20154;&#21592;&#25317;&#26377;&#19968;&#20010;&#24378;&#22823;&#30340;&#31995;&#32479;&#65292;&#35813;&#31995;&#32479;&#28789;&#27963;&#19988;&#26131;&#20110;&#26681;&#25454;&#24212;&#29992;&#31243;&#24207;&#30340;&#22686;&#38271;&#36827;&#34892;&#25193;&#23637;&#12290;<\/p><\/body>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n<\/div><div class=\"wp-block-columns p-0 border is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<div class=\"wp-block-columns px-4 py-3 border-bottom has-background is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\" style=\"background:linear-gradient(243deg,rgb(238,238,238) 0%,rgba(58,166,242,0.15) 100%)\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<div class=\"wp-block-group is-nowrap is-layout-flex wp-container-core-group-is-layout-6c531013 wp-block-group-is-layout-flex\">\r\n<figure class=\"wp-block-image size-thumbnail is-resized is-style-rounded is-style-rounded--3\"><img decoding=\"async\" src=\"https:\/\/www.zhaozhao123.cn\/myitems\/images\/sites16\/2025\/06\/xygcfznnzczhsdmwydzhsmzzzmddnq-400x300.jpg\" alt=\"&#38271;&#24037;&#30721;&#22900;1523\" class=\"wp-image-2906\" style=\"object-fit:cover;width:30px;height:30px\"><\/figure>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading my-0\" style=\"font-size:clamp(0.875rem, 0.875rem + ((1vw - 0.2rem) * 0.175), 1rem);\">&#38271;&#24037;&#30721;&#22900;1523<\/h2>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n\r\n\r\n\r\n<div class=\"wp-block-columns px-xl-5 px-4 py-xl-4 py-3 is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<p>&#22312; Laravel &#20013;&#19978;&#20256;&#21644;&#39564;&#35777;&#25991;&#20214;&#26159;&#24120;&#35265;&#30340;&#25805;&#20316;&#65292;&#29305;&#21035;&#26159;&#24403;&#20320;&#38656;&#35201;&#22788;&#29702;&#22823;&#22411;&#25991;&#20214;&#26102;&#65288;&#22914;&#19978;&#20256;&#22270;&#29255;&#65289;&#12290;&#20197;&#19979;&#26159;&#22914;&#20309;&#20351;&#29992; Laravel &#30340; <code>File<\/code> &#31867;&#36827;&#34892;&#25991;&#20214;&#19978;&#20256;&#65292;&#24182;&#36890;&#36807;&#39564;&#35777;&#22120;&#26469;&#30830;&#20445;&#25991;&#20214;&#26684;&#24335;&#27491;&#30830;&#12290;<\/p>\n<h3>&#27493;&#39588; 1: &#21019;&#24314;&#27169;&#22411;<\/h3>\n<p>&#39318;&#20808;&#65292;&#20320;&#38656;&#35201;&#21019;&#24314;&#19968;&#20010;&#25991;&#20214;&#27169;&#22411;&#31867;&#65292;&#20363;&#22914; <code>File.php<\/code>&#65306;<\/p>\n<pre><code class=\"language-php\">&lt;?php\n\nnamespace AppModels;\n\nuse IlluminateDatabaseEloquentModel;\nuse IlluminateSupportFacadesStorage;\n\nclass File extends Model\n{\n    public function upload($request)\n    {\n        $this-&gt;file = $request-&gt;file('file');\n\n        \/\/ &#39564;&#35777;&#25991;&#20214;&#31867;&#22411;\n        if ($this-&gt;file-&gt;extension() !== 'jpg' &amp;&amp; $this-&gt;file-&gt;extension() !== 'jpeg' &amp;&amp; $this-&gt;file-&gt;extension() !== 'png') {\n            throw new Exception(\"Invalid file type. Only JPG, JPEG and PNG are allowed.\");\n        }\n\n        Storage::disk('public')-&gt;put($this-&gt;file-&gt;getClientOriginalName(), $this-&gt;file-&gt;getContents());\n    }\n}<\/code><\/pre>\n<h3>&#27493;&#39588; 2: &#22312;&#25511;&#21046;&#22120;&#20013;&#20351;&#29992;&#27169;&#22411;<\/h3>\n<p>&#22312;&#20320;&#30340;&#25511;&#21046;&#22120;&#20013;&#65292;&#20320;&#21487;&#20197;&#20351;&#29992; <code>File<\/code> &#27169;&#22411;&#30340;&#23454;&#20363;&#26469;&#22788;&#29702;&#25991;&#20214;&#19978;&#20256;&#21644;&#39564;&#35777;&#65306;<\/p>\n<pre><code class=\"language-php\">&lt;?php\n\nnamespace AppHttpControllers;\n\nuse IlluminateHttpRequest;\nuse AppModelsFile;\n\nclass FileController extends Controller\n{\n    public function store(Request $request)\n    {\n        try {\n            $file = new File();\n            $file-&gt;upload($request);\n\n            return redirect()-&gt;route('files.index');\n        } catch (Exception $e) {\n            return back()-&gt;withInput()\n                -&gt;withErrors(['message' =&gt; $e-&gt;getMessage()]);\n        }\n    }\n}<\/code><\/pre>\n<h3>&#31034;&#20363;&#20195;&#30721;&#20013;&#30340;&#25991;&#20214;&#19978;&#20256;<\/h3>\n<p>&#20551;&#35774;&#20320;&#26377;&#19968;&#20010;&#21517;&#20026; <code>image.jpg<\/code> &#30340;&#25991;&#20214;&#65292;&#28982;&#21518;&#22312;&#25511;&#21046;&#22120;&#20013;&#35843;&#29992;&#23384;&#20648;&#26041;&#27861;&#65306;<\/p>\n<pre><code class=\"language-php\">&lt;?php\n\nnamespace AppHttpControllers;\n\nuse IlluminateHttpRequest;\nuse AppModelsFile;\n\nclass FileController extends Controller\n{\n    public function store(Request $request)\n    {\n        try {\n            $file = new File();\n            $file-&gt;upload($request);\n\n            return redirect()-&gt;route('files.index');\n        } catch (Exception $e) {\n            return back()-&gt;withInput()\n                -&gt;withErrors(['message' =&gt; $e-&gt;getMessage()]);\n        }\n    }\n}\n\n\/\/ controller.php\nreturn view('welcome', [\n    'title' =&gt; 'Welcome',\n    'file' =&gt; request()-&gt;file('image'),\n]);<\/code><\/pre>\n<p>&#22312;&#36825;&#20010;&#20363;&#23376;&#20013;&#65292;&#25105;&#20204;&#20174;&#35831;&#27714;&#20013;&#33719;&#21462;&#25991;&#20214;&#65292;&#28982;&#21518;&#20351;&#29992; <code>new File()<\/code> &#26469;&#21019;&#24314;&#19968;&#20010;&#26032;&#30340; <code>File<\/code> &#23454;&#20363;&#12290;&#20043;&#21518;&#65292;&#25105;&#20204;&#21487;&#20197;&#35843;&#29992; <code>upload<\/code> &#26041;&#27861;&#26469;&#22788;&#29702;&#25991;&#20214;&#19978;&#20256;&#24182;&#39564;&#35777;&#20854;&#26684;&#24335;&#12290;&#22914;&#26524;&#25991;&#20214;&#26684;&#24335;&#19981;&#27491;&#30830;&#65292;&#20250;&#25243;&#20986;&#24322;&#24120;&#24182;&#36820;&#22238;&#38169;&#35823;&#28040;&#24687;&#12290;<\/p>\n<h3>&#25991;&#20214;&#39564;&#35777;&#31034;&#20363;<\/h3>\n<p>&#20026;&#20102;&#39564;&#35777;&#25991;&#20214;&#26159;&#21542;&#20026;&#27491;&#30830;&#30340;&#22270;&#20687;&#26684;&#24335;&#65292;&#25105;&#20204;&#21487;&#20197;&#22312; <code>File<\/code> &#31867;&#20013;&#28155;&#21152;&#19968;&#20010;&#26041;&#27861;&#26469;&#26816;&#26597;&#25991;&#20214;&#25193;&#23637;&#21517;&#12290;&#36825;&#21487;&#20197;&#36890;&#36807;&#20197;&#19979;&#26041;&#24335;&#23454;&#29616;&#65306;<\/p>\n<pre><code class=\"language-php\">if ($this-&gt;file-&gt;extension() !== 'jpg' &amp;&amp; $this-&gt;file-&gt;extension() !== 'jpeg' &amp;&amp; $this-&gt;file-&gt;extension() !== 'png') {\n    throw new Exception(\"Invalid file type. Only JPG, JPEG and PNG are allowed.\");\n}<\/code><\/pre>\n<p>&#36825;&#26679;&#65292;&#24403;&#25991;&#20214;&#19981;&#26159; <code>.jpg<\/code>, <code>.jpeg<\/code>, &#25110; <code>.png<\/code> &#26102;&#65292;&#23601;&#20250;&#35302;&#21457;&#24322;&#24120;&#24182;&#26174;&#31034;&#38169;&#35823;&#20449;&#24687;&#12290;<\/p>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Bug&#32534;&#35793;&#29422; &#22312; Laravel &#20013;&#19978;&#20256;&#21644;&#39564;&#35777;&#25991;&#20214;&#26159;&#19968;&#39033;&#24120;&#35265;&#30340;&#038;#3..<\/p>\n","protected":false},"author":1,"featured_media":0,"menu_order":0,"template":"","meta":{"_acf_changed":false},"tags":[],"my1js2nav":[44],"tuisongtax":[],"class_list":["post-821","my1js","type-my1js","status-publish","hentry","my1js2nav-laravel"],"acf":{"qian_art_seotitle":"","qian_art_seotitle_source":{"label":"SEO\u6807\u9898","type":"text","formatted_value":""},"qian_art_seokws":"","qian_art_seokws_source":{"label":"SEO\u5173\u952e\u8bcd","type":"text","formatted_value":""},"qian_art_stzhong":"","qian_art_stzhong_source":{"label":"\u4e2d | \u77ed\u6807\u9898","type":"text","formatted_value":""}},"_links":{"self":[{"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/my1js\/821","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/my1js"}],"about":[{"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/types\/my1js"}],"author":[{"embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/users\/1"}],"wp:attachment":[{"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/media?parent=821"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/tags?post=821"},{"taxonomy":"my1js2nav","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/my1js2nav?post=821"},{"taxonomy":"tuisongtax","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/tuisongtax?post=821"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}