Score:0

ฉันจะบันทึกภาพที่ถอดรหัส base64 เป็น file_managed ได้อย่างไร

ธง cn

ฉันกำลังพยายามบันทึกภาพของฉันไปที่ Drupal file_managed ตาราง. อย่างไรก็ตามรูปภาพของฉันมาจากการถอดรหัส base64:

 $filename = "เครื่องหมาย-".$user->id(); // ส่งคืน "sign-1234"
 $image_raw = $form_state->getValue('ลายเซ็น'); // คืนค่าสตริง base64 ของ png
 $data = base64_decode(preg_replace('#^data:image/\w+;base64,#i', '', $image_raw));
 $image = file_put_contents('private://requestformfiles/'.$filename.'.png', $data);

 $file = File::load($ภาพ); //ไม่ได้อะไรเลย
 $file->setPermanent(); // ล้มเหลว
 $file->save(); 

 $result = $connection->insert('request_id')
        ->ฟิลด์ ([
            ...
            'ลายเซ็น' => $image,
            ...
        ])
        ->ดำเนินการ ();

จากสิ่งที่ฉันเห็น ไฟล์ของฉันอัปโหลดไปยังโฟลเดอร์ไฟล์ส่วนตัวได้สำเร็จ และ ภาพ ส่งกลับตัวเลข 4 หลักแบบสุ่ม อย่างไรก็ตาม เมื่อตั้งค่าเป็น file_managed ในฐานข้อมูล มันล้มเหลวเนื่องจาก ไฟล์::โหลด ไม่เห็นของฉัน $รูปภาพ.

ความช่วยเหลือใด ๆ อีกครั้งชื่นชม

Score:1
ธง cn

ที่จริงฉันไม่ต้องใช้ ไฟล์ สิ่งที่จำเป็นสำหรับสิ่งนี้ สิ่งที่ฉันต้องการจริงๆคือ file_save_data()

$filename = "nrsign-".$user->id();
$files_data = preg_replace('#^data:application/\w+;base64,#i', '', $image_raw);
$file_data = base64_decode($files_data);
$file = file_save_data($file_data, "ส่วนตัว://requestformfiles/".$filename.".png", FILE_EXISTS_RENAME);

เสียงสะท้อน $file->id();

file_save_data สร้างไฟล์และบันทึกเรกคอร์ดใน files_managed เช่นกัน. $file->id(); คืนค่า $fid สำหรับไฟล์ที่สร้างขึ้น

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา