Laravel不存储请求中的文件

时间:2017-02-10 21:41:24

标签: php laravel laravel-5

我得到了一个名为" image"的文件上传表单。表单正在运行,我正在获取图片,但由于某种原因,它没有存储。这是我用来存储图像的代码:

$request->hasFile('image')
之前我检查

public partial class Form1 : Form
{
    int hour;
    public Form1()
    {
        InitializeComponent();

        if(RunOnStartUp)
            hour = -1;
        else
            hour = DateTime.Now.Hour;

    }
    private void timer1_Tick(object sender, EventArgs e)
    {
        // once per minute:
        if(DateTime.Now.Hour != hour)
        {
            hour = DateTime.Now.Hour;
            DailyTask();
        }
    }
    private DailyTask()
    {
        // do something
    }
}

后来我保存了$ path。路径已成功保存,当我检查它时,它确实存储/上传/ radnomid但没有文件

6 个答案:

答案 0 :(得分:1)

很抱歉发布我自己的答案,但问题是默认情况下laravel公共磁盘不会上传到公共目录。设置需要像这样更改: 配置/ filesystems.php

  'public' => [
              'driver'     => 'local',
              'root'       => public_path(),
              'visibility' => 'public',
          ],

然后简单地说:

$path = $request->image->store('storage/uploads','public');

答案 1 :(得分:0)

确保包含multipart / form-data的enctype。您可以将该属性直接添加到表单中,也可以添加“'文件”。 =>如果您使用FORM帮助器,则为true。

这是使用Laravel 5附带的上传功能的传统方式。

public function processForm(Request $request) 
{
    if( $request->hasFile('image') ) {
        $file = $request->file('image');
        // Now you have your file in a variable that you can do things with
    }
}

答案 2 :(得分:0)

您可以尝试使用此代码,

Image::make($request->file('image'))->save('upload_path/filename.jpg'));

这是此Image包的完整文档。 http://image.intervention.io/

答案 3 :(得分:0)

尝试这样做

source CSVSource, file: my_source_file

transform
transform
transform

destination CSVDestination, file: my_target_file

post_process do
  # send your file to s3, by shelling out to `aws s3 cp`
  # (but make sure to check the exit code if you do so!)
  # or by using the AWS ruby SDK
end

答案 4 :(得分:0)

我想你应该试试这个:

Image::make($request->file('image'))->save(storage_path('uploads/image.jpg')); 

希望这适合你!

答案 5 :(得分:0)

如果你的filesystems.php配置是默认值,那么

$path = $request->image->store('storage/uploads');

保存的文件不是存储/上传,而是保存在存储/应用/存储/上传中。

您当前接受的答案并不是很好,因为public_path()旨在用于存储模板文件而不是用户上传。根据官方文档,上传应该在存储/文件夹中使用,带有来自public / storage /的符号链接,但不能用于公共/。

https://laravel.com/docs/5.4/filesystem#the-public-disk

中了解详情