$ request->文件(“file”)在传递给API

时间:2018-03-08 16:16:19

标签: php laravel file-upload laravel-5.4

我目前遇到文件上传问题(它适用于多个文件,但我还无法上传一个文件)。在我提交带有文件的表单并转出请求数据后,前端控制器会按照我的预期显示数据。

    array:6 [▼
  "_token" => "SOME RANDOM TOKEN"
  "file" => array:1 [▼
    0 => UploadedFile {#633 ▼
      -test: false
      -originalName: "example.pdf"
      -mimeType: "application/pdf"
      -size: 194007
      -error: 0
      #hashName: null
      path: "C:\Program Files (x86)\Ampps\tmp"
      filename: "phpA9B4.tmp"
      basename: "phpA9B4.tmp"
      pathname: "C:\Program Files (x86)\Ampps\tmp\phpA9B4.tmp"
      extension: "tmp"
      realPath: "C:\Program Files (x86)\Ampps\tmp\phpA9B4.tmp"
      aTime: 2018-03-08 16:13:17
      mTime: 2018-03-08 16:13:17
      cTime: 2018-03-08 16:13:17
      inode: 0
      size: 194007
      perms: 0100666
      owner: 0
      group: 0
      type: "file"
      writable: true
      readable: true
      executable: false
      file: true
      dir: false
      link: false
      linkTarget: "C:\Program Files (x86)\Ampps\tmp\phpA9B4.tmp"
    }
  ]
]

然后我将数据传递给我的API 使用此代码并直接返回响应(这仅用于测试目的)。

 $api = new Api();
 $code = $api->request('POST', $api->url('/attachment/document-upload'), $request->all());
 return Response::create($api->response['response'], $code);

API适用于所有其他帖子,但这个

但是当我使用$request->file("file");将文件转储到后端时 它总是返回null。

我有点失落,因为我从来没有将文件发布到API,我不确定我是否遗漏了一些明显的东西。

感谢您提供任何帮助。

问题在于API接收文件并且前端表单中的enctype设置为multipart / form-data

编辑 - 添加了后端控制器功能

public function document_upload(Request $request)
{

    $files = $request->file("file");
    return  response()->json([
        'status' => 'error',
        'message' => $request->header()]);
}

请求标题

    {#631 ▼
  +"status": "error"
  +"message": {#633 ▼
    +"content-type": array:1 [▼
      0 => "application/x-www-form-urlencoded"
    ]
    +"content-length": array:1 [▼
      0 => "181"
    ]
    +"user-agent": array:1 [▼
      0 => "some ssl"
    ]
    +"host": array:1 [▼
      0 => "some server"
    ]
    +"authorization": array:1 [▼
      0 => "Bearer 
     some token
    ]
    +"accept-encoding": array:1 [▼
      0 => "deflate, gzip"
    ]
    +"accept": array:1 [▼
      0 => "*/*"
    ]
  }
}

我必须改变一些被传递的东西,但这是它的一般要点。

0 个答案:

没有答案