Не могу импортировать файл взятый с экспорта csv. Проблема в кодировке
Мой экспорт:
public function export2($id)
{
$userid = Auth::id();
$headers = array(
"Content-type" => "text/csv",
"Content-Disposition" => "attachment; filename=file.csv",
"Pragma" => "no-cache",
"Cache-Control" => "must-revalidate, post-check=0, pre-check=0",
"Expires" => "0"
);
$filename = "test2.csv";
$reviews = DB::select("select * from profile_parameters_p where profile_id = " . $id);
$columns = array('ReviewID', 'Provider', 'Title', 'Review', 'Location', 'Created', 'Anonymous', 'Escalate', 'Rating', 'Name');
$callback = function() use ($reviews, $columns)
{
$file = fopen('php://output', 'w');
fputcsv($file, $columns);
foreach($reviews as $review) {
fputcsv($file, array(iconv('utf-8', 'windows-1251',$review->name)));
}
fclose($file);
};
return Response::download($filename, 'test.csv', $headers);
}
Мой импорт:
public function uploadFile(Request $request){
if ($request->input('submit') != null ){
$file = $request->file('file');
$profile_id = $request->input('profile_id');
// File Details
$filename = $file->getClientOriginalName();
$extension = $file->getClientOriginalExtension();
$tempPath = $file->getRealPath();
$fileSize = $file->getSize();
$mimeType = $file->getMimeType();
// Valid File Extensions
$valid_extension = array("csv");
// dd($valid_extension);
// 2MB in Bytes
$maxFileSize = 2097152;
// Check file extension
if(in_array(strtolower($extension),$valid_extension)){
// dd($valid_extension);
// Check file size
if($fileSize <= $maxFileSize){
// File upload location
$location = 'uploads';
// Upload file
$file->move($location,$filename);
// Import CSV to Database
$filepath = public_path($location."/".$filename);
// Reading file
$file = fopen($filepath,"r");
// dd($filepath);
$importData_arr = array();
// dd($importData_arr);
$i = 0;
while (($filedata = fgetcsv($file, 1000, ",")) !== FALSE) {
// dd($filedata);
$num = count($filedata );
// dd($num);
// Skip first row (Remove below comment if you want to skip the first row)
/*if($i == 0){
$i++;
continue;
}*/
for ($c=0; $c < $num; $c++) {
$importData_arr[$i][] = $filedata [$c];
// dd($filedata);
}
$i++;
}
fclose($file);
// dd($importData_arr);
// Insert to MySQL database
foreach($importData_arr as $importData){
// dd($importData_arr);
$insertData = array(
// "username"=>$importData[1],
// "name"=>$importData[2],
// "gender"=>$importData[3],
"profile_id"=>$profile_id,
// "name"=>$test = dd(mb_detect_encoding($importData[0])),
// "name"=>iconv("WINDOWS-1251", "UTF-8",$importData[0])
// "name"=>$importData[0]
"name"=>iconv("WINDOWS-1251", "UTF-8",$importData[0])
);
Plus::insertData($insertData);
// if (!Plus::query()->where('name', $insertData['name'])->exists()) {
// Plus::query()->create(['profile_id' => Auth::id()]);
// }
}
Session::flash('message','Import Successful.');
}else{
Session::flash('message','File too large. File must be less than 2MB.');
}
}else{
Session::flash('message','Invalid File Extension.');
}
}
// Redirect to index
return redirect()->back();
}
Моя кодировка
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Почему нельзя передать объекты в массив подобным образом?
Я пишу программу, которая выстраивает пирамиду из отсортированных чисел и возвращает двумерный массив