Jquery表单插件图片检索

时间:2011-10-05 22:00:34

标签: php jqueryform

我正在使用Jquery Form插件尝试将图片上传到我的mysql DBMS。我使用JqueryForm ajaxForm()调用来做到这一点。它在我的服务器上调用一个php文件,该脚本将文件放入数据库。然后我尝试在同一个脚本中从数据库中获取该文件。我想我这样做的具体细节是无关紧要的。我真的想知道如何使用来自jqueryForm插件的AjaxForm调用从ajax调用中获取图片。有没有人有一个如何使用该插件执行此操作的示例?我有点失落......

<script type="text/javascript" src="jquery.form.js"></script>
<script>
    $(document).ready(function () {
        $('#profilepicbutton').live('change', function () {
            $("#preview").html('');
            $("#preview").html('<img src="loader.gif" alt="Uploading...."/>');
            $("#registerpt3").ajaxForm({
                target: '#preview',
                success: function (data) {
                    $("#preview").html('');
                    $("#preview").append("<img src=" + data + "></img>");
                }
            }).submit();
        });
    });
</script>    

现在,在jquery表单插件网站上,有一个页面特别包含文件上传说明...
  http://jquery.malsup.com/form/#file-upload 他们给出的例子有点空白......

<textarea> 
for (var i=0; i < 10; i++) { 
    // do some processing 
} 
</textarea>

现在,我该怎么办呢?为什么我循环一些数据结构?如果你看那页,你会看到他们在做什么的指示上非常简短。有人有任何教程或建议吗?感谢。

更新PHP代码

if(isset($_POST) and $_SERVER['REQUEST_METHOD'] == "POST")
{   
$name = $_FILES['profilepicinput']['name'];
$size = $_FILES['profilepicinput']['size'];
if(strlen($name))
{
    list($txt, $ext) = explode(".", $name);
    if(in_array($ext,$valid_formats))
    {
        if($size<(1024*1024)) // Image size max 1 MB
        {
            $actual_image_name = time().$session_id.".".$ext;
            $tmp = $_FILES['profilepicinput']['tmp_name'];
            $fp      = fopen($tmp, 'r');
            $data = fread($fp, filesize($tmp));
            $data = addslashes($data);
            fclose($fp);
             values('$email', '$tmp')");

            if(mysql_query("insert into Personal_Photos (Email, Pics) values('$email', '$data')"))
            {
                $query="select Pics, MAX(ID) from Personal_Photos where Email='$email'";
                $result=mysql_query($query) or die("Error: ".mysql_error());
                $row=mysql_fetch_array($result);
                $mime = 'image/yourtype';
                $base64 = base64_encode($contents);
                $uri = "data:$mime;base64,$base64";
                header("Content-type: image/jpg");
                print($row['Pics']);
            }
            else
            {
                die('Invalid query: ' . mysql_error());
                echo "failed";
            }
        }
        else
            echo "Image file size max 1 MB. Image Size:"+$size;
    }
    else
        echo "Invalid file format..";
}
else
    echo "Please select image..! Bull shit".$email;
exit;

}

1 个答案:

答案 0 :(得分:1)

如果我理解你的问题,你可以创建一个所谓的data URI

在PHP中它非常简单:

$mime = 'image/yourtype';
$base64 = base64_encode($contents);
$uri = "data:$mime;base64,$base64";

并将其作为ajax响应中的字符串传递给您,如您在问题中所述,直接输入。

希望这有帮助,我不能流利使用jqueryform。