Php 添加DropzoneJS以使用Laravel 5上载文件
我有一个文件上传输入的表单,工作正常,但我想用DropzoneJS替换它,以添加拖放功能,但任何文件都可以通过DropzoneJS上传 这就是我妻子的样子:Php 添加DropzoneJS以使用Laravel 5上载文件,php,laravel,laravel-5,dropzone.js,Php,Laravel,Laravel 5,Dropzone.js,我有一个文件上传输入的表单,工作正常,但我想用DropzoneJS替换它,以添加拖放功能,但任何文件都可以通过DropzoneJS上传 这就是我妻子的样子: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Testing DropzoneJS with Laravel 5</title> <script src="{
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Testing DropzoneJS with Laravel 5</title>
<script src="{{ asset('js/dropzone.js') }}"></script>
<link rel="stylesheet" href="{{ asset('css/dropzone.min.css') }}">
</head>
<body>
<div class="container">
<form class="form-horizontal dropzone dz-clickable" action="{{url('/upload)}}" method="post" enctype="multipart/form-data">
<!-- Name input-->
<input id="name" name="name" type="text" placeholder="Your Name" class="form-control">
<div class="dz-message" id="my-dropzone">
<h4>Drag Photos to Upload</h4>
<span>Or click to browse</span>
</div>
<!-- Token -->
<input type="hidden" name="_token" value="<?php echo csrf_token(); ?>">
<!-- Form actions -->
<button type="submit" class="btn btn-primary btn-lg">Add</button>
</form>
</div>
</body>
</html>
我得到Null作为响应,所以我猜文件没有上传。
我错过了什么吗?我试过dropzone.js,它运行得很快,一切正常 在看了你的代码之后,我想我发现了你的问题: 在您的route.php上,您有:
Route::post('/upload', function(){
$the_new_product->name = Input::get('name');
$the_new_product_picture = Input::file('file');
return dd($the_new_product_picture); // I get Null as respons
});
这是错误的,当您想要获取文件时,您必须使用请求而不是输入,输入是在Laravel 4.2上使用的
只需复制并粘贴此内容,然后在您的routes.php上覆盖您的上传路由即可
Route::post('/upload', function () {
//check if file was uploaded
if (Request::hasFile('file'))
{
//houston we have a file!
$file = Request::file('file');
//move it to our public folder and rename it to $name
Request::file('file')->move('images', 'insert_file_name.'.$file->getClientOriginalExtension());
echo 'file uploaded!';
var_dump($file);
}else{
echo 'no file, no bueno';
}
});
就这样!如果您想阅读更多关于获取表单输入和文件的内容,您应该阅读,因为您通常希望验证该输入,请参阅
编辑:
以下是我的看法:
<!DOCTYPE html>
<html>
<head>
<title>Laravel</title>
<link href='//fonts.googleapis.com/css?family=Lato:100' rel='stylesheet' type='text/css'>
<link rel="stylesheet" type="text/css" href="{{ asset('css/dropzone.css') }}">
<script type="text/javascript" src="{{ asset('js/dropzone.js') }}"></script>
<style>
html, body {
height: 100%;
}
body {
margin: 0;
padding: 0;
width: 100%;
color: #B0BEC5;
display: table;
font-weight: 100;
font-family: 'Lato';
}
.container {
text-align: center;
display: table-cell;
vertical-align: middle;
}
.content {
text-align: center;
display: inline-block;
}
</style>
</head>
<body>
<div class="container">
<div class="content">
<form class="form-horizontal dropzone dz-clickable" action="{{url('/upload')}}" method="post" enctype="multipart/form-data">
<!-- Name input-->
<input id="name" name="name" type="text" placeholder="Your Name" class="form-control">
<div class="dz-message" id="my-dropzone">
<h4>Drag Photos to Upload</h4>
<span>Or click to browse</span>
</div>
<!-- Token -->
<input type="hidden" name="_token" value="<?php echo csrf_token(); ?>">
<!-- Form actions -->
<button type="submit" class="btn btn-primary btn-lg">Add</button>
</form>
</div>
</div>
</body>
</html>
拉维尔
html,正文{
身高:100%;
}
身体{
保证金:0;
填充:0;
宽度:100%;
颜色:#B0BEC5;
显示:表格;
字号:100;
字体系列:“Lato”;
}
.集装箱{
文本对齐:居中;
显示:表格单元格;
垂直对齐:中间对齐;
}
.内容{
文本对齐:居中;
显示:内联块;
}
拖动照片以上载
或点击浏览
请发布您的javascript(带有dropjs实现)好吧,我想我遗漏了一些东西,但我遵循了本教程,据我所知,他没有提到我必须使用/添加javascript代码/实现:/hmm是的,您真的不需要任何javascript代码。您有任何控制台错误吗?试着查看NewWork面板,看看哪些参数是postedOK,我只是检查网络面板,但只显示文本字段名,而不显示文件字段……您能检查一下当您删除文件时,是否有输入type=“file”被注入到您的表单中吗?在chrome或firebug中使用web inspector?好的,谢谢,我正在测试你的版本,会让你知道。我刚刚替换了代码,得到了一个“没有文件,没有bueno”,这意味着我仍然有相同的问题:/。。。你能发布你的视图文件(表单)吗?现在这真的很奇怪。。。仍然相同的结果:/Well检查您的laravel日志,可能您在那里有一些错误,您可以在storage\logs\laravel-2015-06-DAY下找到您的日志。log
仍然存在相同的问题,但在浏览器中检查时我注意到的一点是,一旦我删除一个文件,所有输入都会被发布(通过Ajax??)但是当点击submit按钮时,只会发布名称输入和令牌。日志文件显示:#33{main}[2015-06-13 22:41:22]local.ERROR:exception'Symfony\Component\Debug\exception\FatalErrorException',在C:\Bitnami\nginxstack-1.6.2-1\nginx\html\L5\app\Http\routes.php:328堆栈跟踪:#0{main}
<!DOCTYPE html>
<html>
<head>
<title>Laravel</title>
<link href='//fonts.googleapis.com/css?family=Lato:100' rel='stylesheet' type='text/css'>
<link rel="stylesheet" type="text/css" href="{{ asset('css/dropzone.css') }}">
<script type="text/javascript" src="{{ asset('js/dropzone.js') }}"></script>
<style>
html, body {
height: 100%;
}
body {
margin: 0;
padding: 0;
width: 100%;
color: #B0BEC5;
display: table;
font-weight: 100;
font-family: 'Lato';
}
.container {
text-align: center;
display: table-cell;
vertical-align: middle;
}
.content {
text-align: center;
display: inline-block;
}
</style>
</head>
<body>
<div class="container">
<div class="content">
<form class="form-horizontal dropzone dz-clickable" action="{{url('/upload')}}" method="post" enctype="multipart/form-data">
<!-- Name input-->
<input id="name" name="name" type="text" placeholder="Your Name" class="form-control">
<div class="dz-message" id="my-dropzone">
<h4>Drag Photos to Upload</h4>
<span>Or click to browse</span>
</div>
<!-- Token -->
<input type="hidden" name="_token" value="<?php echo csrf_token(); ?>">
<!-- Form actions -->
<button type="submit" class="btn btn-primary btn-lg">Add</button>
</form>
</div>
</div>
</body>
</html>