2012-12-24 79 views
-2

伙计们,我是编程新手,我真的不知道如何将显示在div中的照片保存到服务器。我正在与Java应用程序,我试图在div上显示图像,然后将其保存在服务器上。正如我所知,由于客户端和服务器的兼容性,JavaScript变量不能在jsp或servlets中声明。我正在尝试通过ajax传递url,但由于base64长字符串,它没有显示在服务器上。我认为我们不能将这么长的字符串传递给jsp或servlet页面。有没有其他的方法可以传递字符串或将图像保存到服务器?从JavaScript发送照片到服务器

function GetXmlHttpObject() { 
var xmlHttp=null; 
try { 
// Firefox, Opera 8.0+, Safari 
xmlHttp=new XMLHttpRequest(); 
} 
catch (e) { 
//Internet Explorer 
try { 
    xmlHttp=new ActiveXObject("Msxml2.XMLHTTP"); 
    } 
catch (e) { 
    xmlHttp=new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
} 
return xmlHttp; 
} 

function ajax() { 

xmlHttp=GetXmlHttpObject(); 
var url="/ServletExten/XmlServletGen"; 
url=url+"?datax=" +cordXSend +"&datay=" +cordYSend +"&sizew=" +canvasWidth +"&sizeh=" +canvasHeight ; 
alert(url); 
xmlHttp.open("POST",url,true); 
xmlHttp.send(null); 
} 
+0

你可以用帆布做的!首先在画布上绘制图像,然后使用toDataURL()获取画布数据并上传它! – MJQ

+0

使用toDataUrl()可以得到base64字符串,而且我无法将这样长的字符串从javascript传递给jsp。 –

+0

那么,我已经使用ajax发送像这样的图像数据到php脚本并保存图像! – MJQ

回答

7

创建这样一个input元素,

<form id="fileupf" action="fileup.php" method="post" enctype="multipart/form-data"> 
     <input type="file" id="fileup" name="file" accept="image/*" > 
</form> 

然后在阿贾克斯,

$('#fileupf').ajaxForm({ 
    complete: function(xhr) { 
     alert("Upload complete"); 
    } 
}); 

在PHP中,

<?php 
$target_path = "uploaded_images/"; 

$file_name = $_FILES["file"]["name"]; 
$random_digit=rand(0000,9999); 
$new_file_name=$random_digit.$file_name; 

$target_path = $target_path . basename($new_file_name); 
?> 

如果要保存绘图画布,然后,

的Javascript,

var canvasData = canvas.toDataURL("image/png"); 
var ajax = new XMLHttpRequest(); 
ajax.open("POST",'save.php',false); 
ajax.setRequestHeader('Content-Type', 'application/upload'); 
ajax.send(canvasData); 

PHP,

<?php 
if (isset($GLOBALS["HTTP_RAW_POST_DATA"])) 
{ 
    // Get the data 
    $imageData=$GLOBALS['HTTP_RAW_POST_DATA']; 


    $filteredData=substr($imageData, strpos($imageData, ",")+1); 

    $unencodedData=base64_decode($filteredData); 

    $random_digit=md5(uniqid(mt_rand(), true)); 

    $fp = fopen('yourfolder/new'.$random_digit.'.png', 'wb'); 
    fwrite($fp, $unencodedData); 
    fclose($fp); 
} 
?> 
+0

好的。让我检查! –

+0

你想要保存图像的PHP脚本? – MJQ

+0

我实际上使用java。但是,如果你可以发布脚本,将不胜感激。将根据需要进行更改。 –