php - 如何从该控制器发布多张图像?
问题描述
基本信息
我正在开发一个简单的 Web 应用程序,它可以使用 Laravel 发布照片。
我的问题
我想使用另一个变量创建几个图像发布表单。
如何使用另一个变量使我的控制器工作?
我的代码
routes/web.php
<?php
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/
Route::get('login');
Route::group(['middleweare' => 'auth'], function () {
Route::get('/', 'StoriesController@index');
Route::post('/', 'StoriesController@store');
Route::get('/stories/create', 'StoriesController@add');
Route::post('/stories/create', 'StoriesController@uplaod');
});
Route::group(['middleweare' => 'auth','name'=>'profile'], function () {
Route::get('/profile/edit', 'ProfileController@edit');
Route::get('/profile/create', 'ProfileController@add');
Route::post('/profile/create', 'ProfileController@store');
Route::post('/profile/create', 'ProfileController@upload');
});
Route::get('/home', 'HomeController@index')->name('home');
Auth::routes();
app/Http/Controllers/StoriesController.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\Story;
use Auth;
use App\Posts;
use App\History;
use App\Attachment;
use Carbon\Carbon;
use Storage;
class StoriesController extends Controller
{
public function __construct()
{
$this->middleware('auth');
}
public function index(Request $request)
{
$images = Attachment::all();
return view('stories.index2', compact('images'));
}
public function add()
{
return view('stories.create2');
}
public function store(Request $request)
{
$d = new \DateTime();
$d->setTimeZone(new \DateTimeZone('Asia/Tokyo'));
$dir = $d->format('Y/m');
$path = sprintf('public/images/%s', $dir);
$data = $request->except('_token');
foreach ($data['images'] as $k => $v) {
$filename = '';
$attachments = Attachment::take(1)->orderBy('id', 'desc')->get();
foreach ($attachments as $attachment) {
$filename = $attachment->id + 1 . '_' . $v->getClientOriginalName();
}
unset($attachment);
if ($filename == false) {
$filename = 1 . '_' . $v->getClientOriginalName();
}
$v->storeAs($path, $filename);
$attachment_data = [
'path' => sprintf('images/%s/', $dir),
'name' => $filename
];
$a = new Attachment();
$a->fill($attachment_data)->save();
}
unset($k, $v);
return redirect('/');
}
public function upload(Request $request)
{
dd($request->all());
$this->validate($request, [
'file' => [
'required',
'file',
'image',
'mimes:jpeg,png',
]
]);
if ($request->file('file')->isValid([])) {
$path = $request->file->store('public');
return view('stories.index2')->with('filename', basename($path));
} else {
return redirect('/')
->back()
->withInput()
->withErrors();
}
}
}
我制作了个人资料图片发布表单和一般图片发布表单。我想在同一页面上查看这些图像。
解决方案
推荐阅读
- javascript - 人们分配变量后,Angular 6 / Typescript 属性为“未定义”
- javascript - 如何找到与替代文本和框模型相关的另一个 Safari 解决方法?
- python - 如何在张量流中矢量化索引操作
- haskell - 如何制作同参数化类型的异构类型的容器?
- angular - 如何从 API 获取员工信息?
- sql - Postgres 中的嵌套 sql 脚本和变量
- python - 遍历 pandas 数据框中的列并将结果输出到新的数据框中
- java - Java8/JBoss7 - EJB 调用失败
- javascript - 记录集对象的getrows方法不按顺序调用
- java - 从变量中抛出异常