2012-12-24 78 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。但是,如果你可以發佈腳本,將不勝感激。將根據需要進行更改。 –