2017-10-04 7 views
-1

現在、Gifshot.jsを使用して自分のサイトにユーザーのアバターを作成しています。 GIFファイルサーバー側を格納できるようにしたいが、動作させることができない。問題は、PHPで保存するために、base64でエンコードされたGIFファイルを適切にデコードする方法です。また、静的な名前ではなく、インクリメントされた数字としてファイルをアップロードする方法はありますか?AJAXとPHPを使ってGIFをデコードしてアップロードする方法

Javascriptを::

$("#savegif").click(function(){  
    gifshot.createGIF({ 
     interval: 0.1, 
     numFrames: 25, 
    }, function (obj) { 
     if (!obj.error) { 

      var image = obj.image, 
      animatedImage = document.getElementById('animatedgif'); 
      animatedImage.src = image; 

      var data = animatedImage.src; 
      $.ajax({ 
       url: "gifsave.php", 
       method: "POST", 
       dataType: "text", 
       data: { data } 
      }); 
     } 
    }); 
}); 

PHP:

$file = $_POST['data']; 
$img = str_replace('data:image/gif;base64,', '', $file); 
file_put_contents('images/image.gif', base64_decode($img)); 

答えて

1

あなたはPOSTサーバーへのファイルオブジェクトのBlob表現がとphp://inputを使用してすることができますここで私は、現在のコードのために持っているものですfopen()phpにファイルの内容を取得するには、Trying to Pass ToDataURL with over 524288 bytes Using Input Type Textを参照してください。

fetch("gifsave.php", {method:"POST", body:blob}) 
.then(response => response.ok) 
.then(res => console.log(res)) 
.catch(err => console.error(err)); 

あなたは、パラメータとしてArrayBufferで、たとえば、TypedArrayを作成、ArrayBufferUint8ArrayBlob変換、およびWebSocketを使用してサーバーにファイルをストリーミングすることで、サーバへのチャンクとしてファイルをストリーミングすることができます。

関連する問題