2016-12-04 87 views
1

这些是我有:命名为lamanInformasiLaravel - 上传文件到数据库

数据库中的表,其中有场名为isi

这就是我想要的东西:

用户可以上传多个文档或图像文件,并将这些文件将被存储到数据库中。文件名将被保存到isi字段,并且文件本身将被保存到名为propic的文件夹中。用户也可以在网站上显示他们想要的文件并下载。

这是我做了什么:

我用来引导插件来输入文件。我用这个source。我只是使用jscss文件夹中的文件。这是我的代码:

<html lang="en"> 
<head> 
    <meta charset="UTF-8"/> 
    <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css" rel="stylesheet"> 
    <link href="../css/fileinput.css" media="all" rel="stylesheet" type="text/css" /> 
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css"> 

    <script src="http://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
    <script src="../js/fileinput.js" type="text/javascript"></script> 
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js" type="text/javascript"></script> 
</head> 
<body> 
    <div class="container kv-main"> 
     <div class="page-header"> 
     <h1>Upload Files</h1> 
     </div> 

     <form enctype="multipart/form-data"> 
      <div class="form-group"> 
       <input id="file-5" class="file" type="file" multiple data-preview-file-type="any" data-upload-url="#"> 
      </div> 
     </form> 
    </div> 
</body> 
<script> 
     $("#file-5").fileinput({ 
      uploadUrl: "{{ url('lamanInformasi') }}", 
      uploadAsync: false, 
      previewFileIcon: '<i class="fa fa-file"></i>', 
      allowedPreviewTypes: 'image', 
      previewFileIconSettings: { 
       'doc': '<i class="fa fa-file-word-o text-primary"></i>', 
       'xls': '<i class="fa fa-file-excel-o text-success"></i>', 
       'ppt': '<i class="fa fa-file-powerpoint-o text-danger"></i>', 
       'jpg': '<i class="fa fa-file-photo-o text-warning"></i>', 
       'pdf': '<i class="fa fa-file-pdf-o text-danger"></i>', 
       'zip': '<i class="fa fa-file-archive-o text-muted"></i>', 
       'htm': '<i class="fa fa-file-code-o text-info"></i>', 
       'txt': '<i class="fa fa-file-text-o text-info"></i>', 
       'mov': '<i class="fa fa-file-movie-o text-warning"></i>', 
       'mp3': '<i class="fa fa-file-audio-o text-warning"></i>', 
      }, 
      previewFileExtSettings: { 
       'doc': function(ext) { 
        return ext.match(/(doc|docx)$/i); 
       }, 
       'xls': function(ext) { 
        return ext.match(/(xls|xlsx)$/i); 
       }, 
       'ppt': function(ext) { 
        return ext.match(/(ppt|pptx)$/i); 
       }, 
       'zip': function(ext) { 
        return ext.match(/(zip|rar|tar|gzip|gz|7z)$/i); 
       }, 
       'htm': function(ext) { 
        return ext.match(/(php|js|css|htm|html)$/i); 
       }, 
       'txt': function(ext) { 
        return ext.match(/(txt|ini|md)$/i); 
       }, 
       'mov': function(ext) { 
        return ext.match(/(avi|mpg|mkv|mov|mp4|3gp|webm|wmv)$/i); 
       }, 
       'mp3': function(ext) { 
        return ext.match(/(mp3|wav)$/i); 
       }, 
      } 
     }); 
</script> 

这是我的问题

如何将文件保存到数据库?如何在网站上显示文件?如何使文件变得可下载?由于

回答

1

你需要给文件输入域的名称,如

<form enctype="multipart/form-data"> 
     <div class="form-group"> 
      <input id="file-5" name="image" class="file" type="file" multiple data-preview-file-type="any" data-upload-url="#"> 
     </div> 
</form> 

然后在您的控制器的方法,你可以访问上传的文件,并获得各种性能

**EDIT** 
$destinationPath = storage_path().'/uploads/'; 
or 
$destinationPath = public_path().'/uploads/'; 

//storage_path will give the fully qualified path to the storage folder 
//public_path will give the fully qualified path to the public folder 
//uploads - is the folder name where you want to store the user uploaded files, could be any name you prefer. 
**EDIT end** 

// Retrieving An Uploaded File 
$file = Input::file('image'); 

// Determining If A File Was Uploaded 
if (Input::hasFile('image')) 
{ 
    // 
} 

// Determining If An Uploaded File Is Valid 
if (Input::file('image')->isValid()) 
{ 
    // 
} 

// Moving An Uploaded File 
Input::file('image')->move($destinationPath); 
Input::file('image')->move($destinationPath, $fileName); //$filename is the name by which you want to store the file - change the name if required by by app. 

// Getting Requested file path 
$path = Input::file('image')->getRealPath(); 

// Getting Original name of the file 
//**Edit** - gives the original filename as on uploading user's system. **Edit end** 
$name = Input::file('image')->getClientOriginalName(); 

// Getting uploaded File extention 
$extension = Input::file('image')->getClientOriginalExtension(); 

// Getting Size of the file 
$size = Input::file('image')->getSize(); 

// Getting MIME Type of uploaded file 
$mime = Input::file('image')->getMimeType(); 

然后,您可以储存数据库中的属性或者通过Model对应于您的案例lamanInformasi中的数据库表,或者使用查询构建器直接将数据库表与原始查询结合使用。

看一看laravel文档:
Database - query builder
Eloquent - model approach

您可以使用Laravel's filesystem从文件夹中检索文件,并准备一个列表视图,为用户看到可供下载的文件。

然后使用可以利用Laravel's Response Download为用户提供下载功能。

希望这会有所帮助。

+0

那么,在