【问题标题】:Uploading picture to database in laravellaravel 上传图片到数据库
【发布时间】:2015-04-10 09:46:48
【问题描述】:

我创建了一个表单,用户可以在其中添加新闻,并且我希望他们也能够上传图片。我也尝试过阅读其他用户创建上传表单的内容,但无法理解。 上传的图片需要在我创建的数据库中存储图片路径和所有其他信息。 这样做的原因是我想稍后显示用户创建的新闻和图片,以便可以查看。 所以我需要一些帮助,因为我不太明白如何做到这一点,而且我是 laravel 的初学者。我不想使用任何 .js 或其他脚本,因为我想先学习这些基础知识。

我的数据库:

class NyhetsmodulTable extends Migration {


    public function up()
    {
        Schema::create('news', function($table)
        {
            $table->increments('id');
            $table->string('title');
            $table->string('author');
            $table->string('message');
            $table->boolean('active');
            $table->timestamps();
            $table->string('picture_path');
        });
    }

我的 create.plade.php 文件(不确定我的文件格式是否正确):

{{ Form::open(array('route' => 'adminpanel.newsmodule.store', 'files' => true)) }}
<ul>
    <li>
        {{ Form:: label ('title', 'Title: ' )}}
        {{ Form:: text ('title')}}
    </li>
    <li>
        {{ Form:: label ('author', 'Author: ' )}}
        {{ Form:: text ('author')}}
    </li>
    <li>
        {{ Form:: label ('message', 'News: ' )}}
        {{ Form:: textarea ('message') }}
    </li>
    <li>
        {{ Form::file('image')}}
    </li>
    <li>

    </li>
    <li>
        {{ Form::submit('Submit') }}
    </li>
</ul>

我的控制器,我不明白如何设置:

public function uploadFile()
{

}

我的路线:

Route::post('adminpanel/newsmodule/create',
    [
        'uses' => 'NyhetsController@uploadFile',
        'as' => 'adminpanel.newsmodule.upload'
    ]
);

【问题讨论】:

  • 您不能(不应该)真正将表单嵌入到 HTML 的表单中。如果您的计划是使用 AJAX 在后台上传文件,那么您可能会侥幸成功,只要 AJAX 请求的隐藏输入的结果是外部形式的一部分,而不是内部形式,否则其内容可能不会提交到正确的地方。但是,是的,如果您只是希望表单中的表单能够神奇地工作,那么它不会。 HTML 只是不能那样工作。只需像普通输入一样在外部表单中包含文件输入,它就会起作用(但请确保在外部表单上使用'files' =&gt; true)。

标签: php database laravel image-uploading


【解决方案1】:

表单打开标签应该是

{{ Form::open(array('url' => 'adminpanel.newsmodule.create', 'files' => true)) }}

在第一行, 无需在表单中重新声明表单 files 应该设置为 true,这样它就可以发送文件了

并存储图像,

$news = News::find(1)
$news->image = Input::file('image');
$news->save();

因为我认为你只是保存路径,

$pathToFile = '/foo/bar/baz.jpg
Image::make(Input::file('image')->save($pathToFile);
$news->picture_path = $pathToFile;
$news->save();

【讨论】:

  • 所以我应该在我的商店功能中使用它吗?这是函数现在的样子:public function store() { $input = Input::except(['_token']); $v = Validator::make($input, News::$rules); if($v-&gt;passes()) { News::create($input); return Redirect::route('adminpanel.newsmodule.index'); } return Redirect::route('adminpanel.newsmodule.create') -&gt;withInput() -&gt;withErrors($v) -&gt;with('message', 'There were validation errors'); }
  • @Uhmar Hasan 我想通了!感谢您的帮助!
猜你喜欢
  • 2020-12-07
  • 2020-03-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-29
  • 2013-12-25
相关资源
最近更新 更多