laravel图片上传
A. laravel5.1怎样实现多图上传
1.新建用户,上传头像的时候,我们先要配置一下网站所用的服务器,这里介绍MAC下apache服务器的配置,编辑/etc/apache2/extra目录下的httpd-vhosts.conf
控制器:
前端显示界面:
这段代码会在前端页面绘制出这样一个控件:
为了实现点击按钮弹出选择图片的本地文件选择框,我们还需要编写js代码:
2.第二种方式存在于获取用户信息并编辑的情况
控制器:
需要根据当前要编辑的对象进行数据库的查表操作,
前段显示界面和第一种方法的一样,只是这里的js代码不一样:
所以根据这两点可见很多处理都是可以分为前端处理还是后端处理的。
PS:
补充几点代码解读:
1.<div id="lessonPreview"></div>
2.<div class="form-group">
3. <div class="btn btn-default btn-file">
4. <i class="fa fa-paperclip"></i>上传封面图片
5. <input name="photo1" required id="lesson" type="file"/>
6. </div>
7. <p class="help-block">最大不超过2MB</p>
</div>
上面的第五行代码是获取上传图片的信息,required id = "lesson"将和js文件的这一行代码对应:
$("#lesson").on('change', function () {
if (typeof (FileReader) != "undefined") {
var image_holder = $("#lessonPreview");
image_holder.empty();
var reader = new FileReader();
reader.onload = function (e) {
$("<img />", {
"src": e.target.result,
"class": "cover_small"
}).appendTo(image_holder);
};
image_holder.show();
reader.readAsDataURL($(this)[0].files[0]);
} else {
alert("你的浏览器不支持FileReader接口。无法看到图片预览");
}
});
这个函数处理图片,将图片放置图床上var image_holder = $("#lessonPreview") 然后返回上上张图的第一行进行显示。
B. 把laravel上传至服务器
apache服务器的话 .htaccess文件来控制文件的访问和跳转,laravel的public里也是写有.htaccess文件来控制路由的。
C. laravel 收不到iOS上传的文件
首先使用 request 接收到图片然后保存;保存在了 storage/app/public 文件夹下;然后根据文档想要公开访问该文件夹,需要创建一个符号链接;然后运行 php artisan storage:link 创建了符号链接;此时 public 文件夹下多了一个 storage 文件夹;里边的文件就是 storage/app/public 里的文件。
D. laravel怎么修改上传文件的临时保存路径啊 原本是storage\app
上传文件的临时保存路径是在php.ini中设置的,如
upload_tmp_dir = "e:/wamp/tmp"
各种开发框架或开源产品中需要修改的是上传文件的最终保存地址。
E. laravel 怎么限制上传文件大小
本地和线上都是nginx,先配好rewrite规则(就是把.htaccess里面的规则原样翻译到nginx.conf里面去)
服务器上,我是直接导sql, 毕竟我还不习惯用php命令去创建数据库,当然了,这个见仁见智了,laravel的迁移功能是很强大的,在同步本地和线上数据库方面,实在是简单之至,若你用它的迁移功能操作的话,毕竟只是写个php脚本,传到服务器再执行一下就行了,都不用在服务器登录mysql客户端去操作了.
vender 的是在服务器上当然要用 composer 安装了, 一来vendor太大,用直接上传或者ftp都太慢,二来,用composer的话,可以获得laravel本身以及vendor里面各组件的最新稳定版本.
我是目前还没在服务器上用 artisan, 只用 composer 进行整个框架的安装,php composer install laravel/laravel 之后, 再把本地的app和public上传覆盖, 就可以运行了(记得配置根目录指向public目录,不然还得自己配置路径)
1. 记得 chmod -R 777 app/storage , 不给这个目录写权限, 是运行不了的
2. 记得在线上版的app/config/app.php 里面, 使用一个32位随机的 KEY, 然后将 debug 改为false, 不然任何错误都会直接显示出来, 太不安全了
F. 如何高效地学习 Laravel 框架
推荐学习路径
1. 框架的使用知识学习
基于以上的思想,我创建了 《Laravel 实战课程》,计划中有三本(也有可能更多),分别是:
第一本 —— 《Laravel 入门教程 - 从零到部署上线》
第二本 —— 《Laravel 进阶课程 - 从零开始构建论坛系统》
第三本 —— 《Laravel 高级课程 - 构架 API 服务器》
zhangbao同学的Laravel 文档阅读笔记
leoyang同学的Laravel 源码分析笔记
第一本书教授如何使用 Laravel 一步一步构建一个类似新浪微博的应用,书中很多技术话题会被一带而过,这是有意而为之的,我们希望让读者保持对编码线索的专注,不被篇幅悠长的名词解释分心。通过阅读本教程,你将学到如 HTML、CSS、JavaScript、PHP 和 Laravel 等 Web 开发相关的基础知识。不仅如此,本书还会对这些基础知识点进行延伸扩展,为你讲解一些在 Web 开发中更为专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流、Bootstrap 框架基本使用等。这些知识将为你未来的编程开发奠定下坚实的基础。
第二本以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。编码规范遵循 Laravel 项目开发规范 ,应用程序架构思路贴近 Laravel 框架的设计哲学。在论坛系统的构建中,我们将学到多角色用户权限系统、管理员后台、注册验证码、图片上传、图片裁剪,XSS 防御、自定义命令行、自定义中间件、任务调度、队列系统的使用、应用缓存、Redis、模型事件监控、表单验证、消息通知、邮件通知、模型修改器等知识。在本课程的学习中,你不仅能学到使用 Laravel 开发一个论坛项目,还能学到安全优先、高扩展性的大型项目架构经验。
第三本将以构建 API 服务器为目标,来展开。目前本课程正在紧张撰写中,敬请期待。
2. 框架的底层实现学习
学完了以上三本书,你将拥有一定的项目开发经验,对框架的功能使用也会有一个比较全面的系统性理解。这时候,会是学习‘底层实现’的好时机。
底层实现的知识学习,可以从文档开始,打开 Laravel 的文档中心 ——d.laravel-china.org,找到最新版本的 Laravel 文档,然后仔细阅读 2、3 遍。因为有了上面的项目经验,此时的文档阅读啃起来会轻松多了。
阅读文档后,可以尝试看下 Laravel 底层的源码,看看这些框架的功能都是怎么实现的。
学习过程中可以适当做笔记,例如:
错误的学习方法
一上来就开始啃文档d.laravel-china.org。
如果你是新手,有太多的新概念你需要学习,你会发现学习起来非常艰难,甚至怀疑文档是不是写的太烂了(社区里经常出现这种抱怨)。
事实上,不是文档写的太烂,而是你把文档用错了。文档的‘目的’是快速查阅,一份优秀文档的标准是语言简练,释义,这个 Laravel 的文档做的很棒。但是,文档并不适合做入门学习使用,上面我们已经讲过,原因是信息量太大。
寻找网络上零散的课程进行学习。
如果你想学习单个概念,这些零散的小课程会很方便。但是,如果是想以阅读大量课程来达到系统性学习的目的,你将会很失望。很多时候你会感觉 —— 你好像学了很多,学了很久,以为自己学会了,但是心里还是没底气。
你需要的是通过项目,完整的项目,将所有的知识串起来去记忆。你的作品,清清楚楚摆在面前,看着你一步步构建出来的一套系统,自信心也会有所增加。
一开始就学习高级话题,如服务容器、服务提供器、Facades、Contracts、Repository 等
很多时候你会发现这些话题晦涩难懂,很难学习。并且即使你毅力比较好,死记硬背,很快也会忘记,学习效率非常低下。然后最重要的,学会这些概念,并无法使你掌握构建一个完整项目的能力。
G. laravel下有哪些包值得推荐
Carbon
Laravel 其实已经包含了这个扩展包了,但是我觉得有必要单独提一下,因为用得还是比较多的。在日期处理方面的确帮了很大忙。
Debugbar
这个扩展包能够提供更多深层的运行信息,方便你修复bug,让应用高效、流畅的运行。
Envoy
Envoy 能帮你在远程系统上运行 SSH 命令。在本地系统和远程部署时它都帮了很大的忙。
Laravel DomPDF
这个扩展包将 DomPDF 库包装成 Laravel 化的调用语法,让创建 PDF 很轻松。
Laravel Generators
使用生成器能够加速开发过程。它所包含的指令几乎涵盖了 Laravel 开发中的方方面面。
Laravel IDE Helper
如果你在使用 PhpStorm,那么这个工具包是必须要装的。我在所有项目中都使用了它,这让 IDE 使用起来很 nice。
Intervention
每个项目几乎都要处理图片上传的功能,Intervention 让图片上传和处理 so easy!
Parsedown
解析 Markdown 就靠它了!快速、稳定、易于使用。
H. laravel框架中怎么实现多文件上传
一、使用工具:laravel、软件编写程序
二、方法步骤:
1、配置本地文件系统
让我们从配置开始吧,我们在 public 目录下创建一个 uploads 目录用来存放上传的文件,这样所有上传文件都可以通过浏览器直接访问。
首先我们在博客项目目录下使用如下命令在 public 目录下创建 uploads 子目录:
很简单。接下来我们来编辑 config/blog.php:
我们在 uploads 配置项中使用 storage 定义使用的文件系统,使用 webpath 定义 web 访问根目录。
最后,编辑 config/filesystems.php 如下:
2、创建帮助函数文件
在 Laravel 5.1 项目中有时我们会需要一些不依赖于类的辅助函数,通常我们会将这些辅助函数定义在一个单独文件如 helpers.php 中。我们在 app 目录下创建这个名为 helpers.php 的文件,并编辑其内容如下:
其中 human_filesize() 函数返回一个易读的文件尺寸,is_image() 函数在文件类型为图片的时候返回 true。
要让应用能够正确找到 helpers.php 文件,还要修改项目根目录下的 composer.json:
在 autoload 配置项的 files 数组中指定要被加载的文件/文件夹。修改完成后记得运行 composer mpauto 确保修改生效:
现在 helpers.php 中的所有函数都会载入到自动加载器中,你可以在博客应用的代码中任意使用其中的函数。
3、创建文件上传管理服务
现在基本配置已经完成了,让我们创建一个服务类来管理上传文件。
检测文件 MIME 类型
我们想要基于不同类型的上传文件进行不同的操作,这可以通过检测上传文件 MIME 类型轻松实现。
PHP 有一个内置函数 mime_content_type() 用于检测文件的MIME类型,但是该函数已经废弃了,我们使用另一个解决方案。
在 Packagist 中搜索 “mime” 会查询到一个名为 dflydev 的包,我们在博客项目中使用 Composer 安装该依赖包:
我们将使用该依赖包提供的方法来检测文件的 MIME 类型。
创建UploadsManager类
在 app/Services 目录下创建 UploadsManager.php,编辑其内容如下:
4、实现文件上传管理列表
现在 UploadsManager 服务类已经创建,接下来我们来实现控制器的 index 方法。
创建 index 方法
编辑 app/Http/Controllers/Admin 目录下的 UploadController.php 文件内容如下:
构造方法中注入了 UploadsManager 依赖,在 index() 方法中只需传入 folderInfo() 返回的数据到要渲染的视图并返回即可。
你可能已经注意到 $folder 从请求中获取,是的,我们只需要通过请求参数即可实现文件夹修改。
创建 index 视图
在 resources/views/admin 目录下新建 upload 目录,并在该目录下创建 index.blade.php 文件,编辑该文件内容如下:
尽管这个模板文件很长,但是理解起来并没有什么困难,所有文件上传和下载管理都将在这里进行。
有没有注意到我们在最后包含了 admin.upload._modals?是的,我们将模态对话框放到了一个单独的视图模板中。现在,我们在 resources/views/admin/upload 目录下创建一个空的 _modals.blade.php 文件。
上传管理界面
打开浏览器,进入博客应用后台管理页面,点击顶部导航条的“上传”(Uploads)链接,将会跳转到如下页面:
既漂亮又清爽,有木有?接下来让我们来实现所有的模态对话框及其背后的业务逻辑。
5、完成文件上传管理功能
对于完整的文件上传管理器而言剩下的工作已经不多了,现在是时候完成所有功能了。
添加路由
我们需要为上传管理器定义所有需要的路由,编辑 app/Http/routes.php 添加如下路由:
定义所有模态对话框
编辑我们之前创建的 _modals.blade.php 文件内容如下:
在该文件中总共有5个不同的模态弹出框,分别对应上面定义的5个路由。
添加表单请求验证类
使用 Artisan 命令创建 UploadFileRequest,并编辑其内容如下:
使用 Artisan 命令创建 UploadNewFolderRequest,并编辑其内容如下:
同样,这些请求类用于验证表单输入。
完成 UploadController 所有方法
编辑 UploadController.php 文件内容如下:
完成 UploadsManager 服务类
最后编辑 app/Services/UploadsManager.php 内容如下:
至此,已经完成了文件上传管理的所有工作我们将本地存储的根目录修改为前面创建的 public/uploads 目录。
I. laravel intervention image 怎么实现头像上传
通过 composer 安装 composer intervention/image
修改 config/app.php 文件,添加 $providers 和 $aliases
'Intervention\Image\ImageServiceProvider'
'Image' => 'Intervention\Image\Facades\Image'
By default Intervention Image uses PHP's GD library extension to process all images. If you want to switch to Imagick, you can pull a configuration file into your application by running on of the following artisan command.
Publish configuration in Laravel 5
$ php artisan vendor:publish --provider="Intervention\Image\ImageServiceProviderLaravel5"
Handling image uploads in Laravel
In a Laravel application it is also possible to pass an uploaded file directly to the make method.
Creating Image from File Upload in Laravel
// resizing an uploaded file
Image::make(Input::file('photo'))->resize(300, 200)->save('foo.jpg');
J. 如何将本地的laravel代码上传到centos
今天打算在CentOS 7上配置一个Laravel,之前都是在本机上开发,打算实际配置一下。
1)系统上已经安装了Apache、PHP、mysql,安装命令为yum install httpd php mysql
因为CentOS 7自带的php模块很少,如果需要增加模块,需要编译才行,所以需要php-devel模块,用yum install php-devel命令就可以了。
2)安装laravel
a)安装composer:
curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer
b)安装laravel
composer global require "laravel/installer=~1.1"
这个命令会在~/.composer/vender/bin下安装一个laravel命令,可以将这个目录放到系统path里,也可以直接执行
mkdir /opt/www
cd /opt/www
~/.composer/vender/bin/laravel new study
会创建一个study目录,包含完整的laravel开发必须的文件。
c)配置Apache,将/opt/www/study/public设置为网站主目录,大致要修改/etc/httpd/conf/httpd,conf的以下内容
DocumentRoot "/opt/www/kangfu/public"
<Directory "/opt/www/kangfu/pubic">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
其实就是修改一下主目录,将其替换为/opt/www/study/public,就可以了
在浏览器里输入http://ip_addr/,系统会提示没有php-mcrypt模块,这个比较麻烦。
3)安装php-mcrypt
安装过程可以参考一下http://www.cnblogs.com/ccdc/archive/2013/04/19/3030156.html
基本过程就是下载libmcrypt,mhash,mcrypt的安装包,依次编译安装即可,通常命令依次为
./configure
make
make install
在配置mcrypt时,会提示找不到libmcrypt.so,需要将其所在路径加入到LD_LIBRARY_PATH,命令为
export LD_LIBRARY_PATH=/user/local/lib;LD_LIBRARY_PATH
然后配置安装即可。
对于php-mcrypt,需要去下载PHP的源代码,本机带的版本为5.4.16,在PHP网站上下载,解压缩,进入php目录中,再进入ext/mcrypt,运行
phpize #这个命令用来生成config文件,如果没有安装php-devel会出错。
./configure --with-php-config=/usr/bin/php-config
make
make install
在/etc/httpd/conf.d/下,运行echo 'extension=mcrypt.so' > mcrypt.ini
在浏览器中输入http://ip_addr/就可以看到启动页面了
其实这个过程非常简单,只不过让我对PHP新增模块的方法有了一定的了解,学了一点东西。Laravel学习笔记(三)--在CentOS上配置Laravel