因此,我尝试在我的应用程序中实现一个上传页面,并且在该页面中,您可以同时上传图片和歌曲以及其他内容(类型,说明等)。我设法通过图像干预使图像正常工作,但是我试图将mp3 / wav文件(使用base64解码功能)读取为文件,因此可以使用move方法将其存储在本地文件夹中(有效上传),但我不明白laravel为什么将其读取为字符串。有什么我想念的吗?
解码功能
function base64_to_song($base64_string, $output_file) {
// open the output file for writing
$ifp = fopen( $output_file, 'wb' );
// split the string on commas
// $data[ 0 ] == "data:image/png;base64"
// $data[ 1 ] == <actual base64 string>
$data = explode( ',', $base64_string );
// we could add validation here with ensuring count( $data ) > 1
fwrite( $ifp, base64_decode($data[1]));
// clean up the file resource
fclose( $ifp );
return $output_file;
}
在我的控制器中:
$songextension = $request->get('songextension');
$file = $request->json()->get('song_file');
$extension = $songextension;
$filename = rand(11111,99999).'.'.$extension;
$newfile = base64_to_song($file, $filename);
$destinationPath="uploads/music";
$newfile->move($destinationPath, $filename);
它只是一直将$ newfile作为字符串而不是输出来读取