2011-11-24 31 views
9

Tôi nhận được chuỗi JPEG được mã hóa base64 qua yêu cầu POST đối với dịch vụ web của tôi. Tôi muốn giải mã và lưu nó vào hệ thống tập tin. Làm thế nào tôi có thể đạt được điều này bằng cách sử dụng PHP 5.3. Tôi có thể giải mã thành công dữ liệu bằng cách sử dụng hàm base64_decode.Làm thế nào để lưu hình ảnh đã giải mã base64 trong hệ thống tập tin bằng php?

Làm cách nào để lưu chuỗi đã giải mã này dưới dạng hình ảnh JPEG trong máy chủ?

Xin cảm ơn trước.

+0

bạn có cố gắng lưu tệp này trong tệp nhị phân bằng fopen không? – Arfeen

+0

@Arfeen Cảm ơn, tôi đã thử file_put_contents() và nó hoạt động. Tôi đến đây để cập nhật câu hỏi của tôi để nhận thấy rằng ý kiến ​​của bạn và của Lawrence Cherone. – Amit

+0

Là một giải pháp chung linh hoạt hơn và mạnh mẽ hơn, [PHP-FileUpload] (https://github.com/delight-im/PHP-FileUpload/tree/master) đi kèm với cả ['Base64Upload'] (https: //github.com/delight-im/PHP-FileUpload/blob/7c950635cbd45ade9fb2656eb285259dc2a8f0fb/src/Base64Upload.php) và ['DataUriUpload'] (https://github.com/delight-im/PHP-FileUpload/blob/7c950635cbd45ade9fb2656eb285259dc2a8f0fb /src/DataUriUpload.php), được [tài liệu ở đây] (https://github.com/delight-im/PHP-FileUpload/blob/master/README.md#usage). – caw

Trả lời

12

Nếu bạn chắc chắn hình ảnh sẽ luôn là jpg sau đó bạn chỉ có thể sử dụng: file_put_contents();

<?php 
$decoded=base64_decode($encodedString); 

file_put_contents('newImage.JPG',$decoded); 
//leave it to you to randomize the filename. 
?> 
+0

Cảm ơn rất nhiều. Nó hoạt động. Tuy nhiên nó không được bảo đảm để luôn luôn là một JPEG. Tôi sẽ thử xem tôi có thể lấy nó từ loại MIME không. :) Đánh giá cao sự trợ giúp! – Amit

8

Thay thế khoảng trống có dấu hiệu + là cần thiết nếu các dữ liệu có nguồn gốc từ canvas.toDataURL() chức năng.

$encodedString = str_replace(' ','+',$encodedString); 

See this question

Nó đã giúp rất nhiều trong trường hợp của tôi.

+0

anh ta cần giải mã chuỗi. – FabianoLothor

Các vấn đề liên quan