Tôi có một URI dữ liệu tôi nhận được từ javascript và cố gắng lưu qua php. Tôi sử dụng đoạn mã sau cung cấp tệp hình ảnh bị hỏng:Dữ liệu PHP-URI để nộp
$data = $_POST['logoImage'];
$uri = substr($data,strpos($data,",")+1);
file_put_contents($_POST['logoFilename'], base64_decode($uri));
data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs 9AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAxklEQVQYlYWQMW7CUBBE33yITYUUmwbOkBtEcgUlTa7COXIVV5RUkXKC5AxU EdyZVD4kyKxkwIrr9vd0c7Oih aopinLNsF6Qkg2XW4XJ7LGFsAAcTV6lF5/jLdbALA9XDAXYfthFQVx OrmqKYK88/7rbbMFksALieTnzu9wDYTj6f70PKsp2kwAiSvjXNcvkWpAfNZkzWa/5a9yT7fdoX7rrB7hYh2fXo9HdjPYQZu3MIU8bYIlW20y0RUlXG2Kpv/vfwLxhTaSQwWqwhAAAAAElFTkSuQmCC
Dưới mã là hình ảnh thực tế làm URI dữ liệu. 'logoImage' là chuỗi ở trên và $ uri là chuỗi trừ 'image/jpeg; base64'.
Tôi xin lỗi đã làm cho tôi một lỗi đánh máy ở đâu đó? – GAgnew
URI dữ liệu bạn có trong ví dụ của mình không phải là hình ảnh PNG hợp lệ. Điều này sẽ không bao giờ làm việc và không liên quan đến mã, nó liên quan đến dữ liệu. – hakre
Bạn có thể muốn giữ nó như một hình ảnh base64. Tôi đoán, bởi vì tôi không phải là một chuyên gia nhị phân, rằng tất cả các ví dụ được đưa ra ở đây mang lại một kết quả 32 bit. Kể từ PHP 5.2, các url dữ liệu sẽ hoạt động, vì vậy giải pháp có thể thực sự đơn giản như: 'file_put_contents ('logo.png', preg_replace (/ \ s + /, '+', $ _POST ['logoImage']))' nếu bạn đang sử dụng API FileReader JavaScript cùng với AJAX. – PHPglue