@maitrungduc1410 Dạ vâng, mình sẽ chạy composer update ở đâu vậy anh nhỉ, xin lỗi anh do em cũng mới học tập về mảng này nên cũng chưa rành lắm ạ, có gì nhờ anh chỉ chi tiết dùm em 1 tí, em cảm ơn
Haha cũng đúng, những project như vậy quy trình tuyển dụng gắt nên gà mờ thì khó mà vô được, mà vô nhưng toxic, không chịu theo process thì cũng out sớm.
@sven_9x editor.uploadImages() hoặc có thể sử dụng option automatic_uploads đều sẽ gọi tới server backend(của bạn tự code) và upload file. Nếu ko có path remote của file trả về từ response sau upload thì sẽ convert ảnh thành base64 và lưu dạng base64 luôn.
Note: Execute the editor.uploadImages() function before submitting the editor contents to the server to avoid storing the images as Base64. Use a success callback to execute code once all the images are uploaded. This success callback can save the editor’s content to the server through a POST.
Đoạn này ý nghĩa là hãy handle cái hàm trên trước khi gửi editor contents xuống server để lưu trữ.
Đầu tiên phần config tinymce(Theo hướng sử dụng automatic_uploads option để tự động upload image lúc chọn xong, bạn có thể chọn sử dụng editor.uploadImages() như trên thì bỏ option automatic_uploads đi và gọi editor.uploadImages() để gửi cả 1 loạt ảnh xuống server rồi mới gửi request lưu data):
this.tinymceOptions = {
image_title: true,
// enable automatic uploads of images represented by blob or data URIs
automatic_uploads: true,
// URL of our upload handler (for more details check: https://www.tinymce.com/docs/configure/file-image-upload/#images_upload_url)
// here we add custom filepicker only to Image dialog
file_picker_types: 'image',
images_upload_url: '<ipserver:port/upload', #Chỗ này là path tới API Post
file_picker_callback: function (callback, value, meta) { # Chỗ này ghi đè lại behavior default của file picker
if (meta.filetype == 'image') {
$('#upload').trigger('click');
$('#upload').on('change', function () {
var file = this.files[ 0 ];
var reader = new FileReader();
reader.onload = function (e) {
callback(e.target.result, {
alt: ''
});
};
reader.readAsDataURL(file);
});
}
}
}
Dưới server thì handle POST request tại path /upload rồi thực hiện logic upload file
Nên sử dụng 1 function normalize filename và add thêm uniqueID tự generate ngẫu nhiên để tránh trùng tên
Ví dụ:
"Đây là tên file.txt" => "day_la_ten_file_fkuujs909032.txt"
Rồi trả về response dạng { 'location': 'ipserver:port/path_to_folder/day_la_ten_file_fkuujs909032.txt' }'
Phần backend nhớ lưu ý phần CORS.
THẢO LUẬN
Hay quá. Cảm ơn bạn nhiều nhé. Mình đã làm theo và thành công rồi
@maitrungduc1410 Dạ vâng, mình sẽ chạy composer update ở đâu vậy anh nhỉ, xin lỗi anh do em cũng mới học tập về mảng này nên cũng chưa rành lắm ạ, có gì nhờ anh chỉ chi tiết dùm em 1 tí, em cảm ơn
Haha cũng đúng, những project như vậy quy trình tuyển dụng gắt nên gà mờ thì khó mà vô được, mà vô nhưng toxic, không chịu theo process thì cũng out sớm.
@KyThinh Chuẩn đó bạn. Giống như Viblo, mỗi bài viết sau khi publish đều được thêm URL vào trong sitemap:
@tinhtn89 cho mình xem chỗ view child_category bạn viết như thế nào được không ạ
Cảm ơn anh về bài viết này! Chúc anh năm mới thuận lợi và đạt được thành công mới! 😄
@sven_9x editor.uploadImages() hoặc có thể sử dụng option automatic_uploads đều sẽ gọi tới server backend(của bạn tự code) và upload file. Nếu ko có path remote của file trả về từ response sau upload thì sẽ convert ảnh thành base64 và lưu dạng base64 luôn.
Note: Execute the editor.uploadImages() function before submitting the editor contents to the server to avoid storing the images as Base64. Use a success callback to execute code once all the images are uploaded. This success callback can save the editor’s content to the server through a POST. Đoạn này ý nghĩa là hãy handle cái hàm trên trước khi gửi editor contents xuống server để lưu trữ.
Đầu tiên phần config tinymce(Theo hướng sử dụng automatic_uploads option để tự động upload image lúc chọn xong, bạn có thể chọn sử dụng editor.uploadImages() như trên thì bỏ option automatic_uploads đi và gọi editor.uploadImages() để gửi cả 1 loạt ảnh xuống server rồi mới gửi request lưu data):
Phần HTML
Dưới server thì handle POST request tại path /upload rồi thực hiện logic upload file Nên sử dụng 1 function normalize filename và add thêm uniqueID tự generate ngẫu nhiên để tránh trùng tên Ví dụ: "Đây là tên file.txt" => "day_la_ten_file_fkuujs909032.txt" Rồi trả về response dạng { 'location': 'ipserver:port/path_to_folder/day_la_ten_file_fkuujs909032.txt' }' Phần backend nhớ lưu ý phần CORS.
Bạn có thể xem thêm tại đây: https://www.tiny.cloud/docs/general-configuration-guide/upload-images/#images_upload_url
Cảm ơn anh nhiều ah. Theo em hiểu flow là: thêm 1 blog -> Thêm vào file sitemap.xml
@hoangphikiemkhach cảm ơn bạn
bro liên hệ ngân hàng cho chắc nhé! Còn mình dùng của Sacombank.
Bác ơi cho mình hỏi chút bác thanh toán Kodecloud bằng thẻ visa ngân hàng nào vậy, mình dùng TPbank mà nó không cho thanh toán
OMG, mấy phần sau hấp dẫn với thực chiến hơn nhiều so với mấy cháp đầu. thanks anh
Hóng phần tiếp theo của bạn
Cảm ơn bạn về bài viết! 😄 Chúc bạn có năm mới thành công mới nhé!
Mình hiện tại đang là 1 Dev và cũng đang có định hướng rẽ hướng sang BA. Hy vọng có thể kết nối và trao đổi thêm nhiều điều với bạn! ^ ^
cái này là do package php vendor chắc là outdate rồi e ạ, cái này e pahir chạy
composer update
đó@quangnv1311 mình đọc phần đó r nhưng đang chưa hiểu đoạn xử lý upload bên tinymce
@dang123 Có một vài cách cách:
@AAAAA Cám ơn anh về bình luận siêu chi tiết này ạ! ^ ^
tks
tệ