javascript - 选择文件后立即上传图像

标签 javascript php jquery ajax image-uploading

用户从浏览器中选择文件后如何立即上传图像?

就像在 Facebook 中一样,当您需要上传封面或个人资料图片时,您需要 选择文件,然后开始上传。

我现在只有我的输入标签

<input id="chaf" type="file"/>

以及可以在选择文件后运行该函数的js

$('#chaf').change(function(){
    // Upload image start
});

但是我怎样才能以这种方式将数据发送到php呢?

最佳答案

您可以使用 Ajax 将文件上传为 Base64 字符串(无需刷新)。 像这样的事情。

$(document).on("change", ".custom-file-input", this, function(e){       
   GetBase64( e.target );
});

function GetBase64( input ) {
   if ( input.files && input.files[0] ) {
      var FR= new FileReader();
      FR.onload = function(e) {
         var str = e.target.result;
         /* preview it ( if you wanted to ) */
         $('#preview-img').attr( "src", str );
         /* upload it to server */
         UploadFile(  str );
      };       
      FR.readAsDataURL( input.files[0] );
   }
}

function UploadFile( file_str ) {
   console.log( file_str );
   /* use $.ajax to upload your file */
}

引用这个答案在磁盘中存储base64 base64 string to an image file

在 php 中是这样的

<?php

$base64Str = $_REQUEST[ "your-post-variable" ];
$img = explode(',', $base64Str);

$fp = fopen( "my-image.png" , "wb"); 
fwrite($fp, base64_decode( $img[1]) ); 
fclose($fp); 

?>

关于javascript - 选择文件后立即上传图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22669838/

相关文章:

javascript - 无法使用 Google map 在 'write' 上执行 'Document'(InfoWindow 问题)

jQuery bug elem 未定义 if ( elem.nodeName ) {

javascript - 如何一一获取多行并检查它们的值?

javascript - 在谷歌地图中给每个国家不同的颜色

php - mysql 正则表达式构建

php - Laravel 5 中不存在类 App\Http\Controllers\StudentController

php - 使用 Smarty 进行选择和本地化

jquery - $ ("#input").keyup 无法像 $(document).keyup 那样工作

c# - 只读时无法获取带有文本框的文本?

javascript - node.js 和 socket.io。 websocket 的传输类型配置?