使用webClient OpenReadAsync将图像从PHP检索到Silverlight [英] Retrieving images from PHP to Silverlight using webClient OpenReadAsync
问题描述
大家好
我正在建立一个网站Silverlight-PHP-SQL Server
而且我需要从服务器保存和检索图像.
从Silverlight应用程序保存图像效果很好
并从服务器检索到PHP也可以使用
(我将图像写入文件中就可以了)
但是当我尝试从PHP读取应用程序时
我得到了一些额外的字节,但无法识别为图像.
代码是:
hi all
I am building a website Silverlight - PHP - Sql Server
and i need to save and retrieve images from the server.
Saving images from the Silverlight app works fine
and retrieving from the server to PHP also works
( i write the image to a file and it is fine)
but when i try to read from the PHP to the app
i get a few extra bytes and it''s not recognised as an image.
the code is :
private void btnPhoto_Click(object sender, System.Windows.RoutedEventArgs e)
{
Random random = new Random();
WebClient webClient = new WebClient();
webClient.OpenReadCompleted += new OpenReadCompletedEventHandler(download_OpenReadCompleted);
Uri myUri = new Uri("http://servername/PHP/GetUserPhoto.php?userID=1" + "&sid=" + random.Next(), UriKind.RelativeOrAbsolute);
webClient.OpenReadAsync(myUri, "GET");
}
void download_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
{
if ((e.Cancelled != true) || (e.Result != null))
{
Stream stream = e.Result;
BitmapImage loadedImage = new BitmapImage();
stream.Position = 0;
loadedImage.SetSource(e.Result);
smallImage.Source = loadedImage;
}
}
错误在
loadedImage.SetSource(e.Result);
{System.Exception: Catastrophic failure (Exception from HRESULT: 0x8000FFFF (E_UNEXPECTED))
at MS.Internal.XcpImports.CheckHResult(UInt32 hr)
at MS.Internal.XcpImports.BitmapSource_SetSource(BitmapSource bitmapSource, CValue& byteStream)
at System.Windows.Media.Imaging.BitmapSource.SetSourceInternal(Stream streamSource)
at System.Windows.Media.Imaging.BitmapImage.SetSourceInternal(Stream streamSource)
at System.Windows.Media.Imaging.BitmapSource.SetSource(Stream streamSource)
at SilverlightApplication13.MainPage.downloader_OpenReadCompleted(Object sender, OpenReadCompletedEventArgs e)
at System.Net.WebClient.OnOpenReadCompleted(OpenReadCompletedEventArgs e)
at System.Net.WebClient.OpenReadOperationCompleted(Object arg)}
行上
我返回的流是947个字节-应该是942个字节
有谁知道我在做什么错
php代码是:
the stream i get back is 947 bytes - it should be 942 bytes
does anyone have any ideas what i am doing wrong
the php code is:
<pre lang="php"><?php<br />
$spUserID = $_GET["userID"];<br />
<br />
$serverName = "(local)";<br />
$connectionOptions = array(''Database''=>''dbname'');<br />
<br />
$conn = sqlsrv_connect( $serverName, $connectionOptions);<br />
<br />
if( $conn === false ) {<br />
echo "error: " . sqlsrv_errors();<br />
}<br />
<br />
else {<br />
<br />
$tsql = "select imageData from images where userID = " . $spUserID;<br />
$stmt = sqlsrv_query($conn, $tsql );<br />
$result = sqlsrv_fetch( $stmt );<br />
$stream = sqlsrv_get_field( $stmt, 0, SQLSRV_PHPTYPE_STREAM(SQLSRV_ENC_BINARY));<br />
<br />
$imgfile = fopen("UploadedImages/debug3.png", "w");<br />
while( !feof( $stream))<br />
{<br />
$str = fread( $stream, 2048);<br />
$str = fread( $stream, 2048);<br />
fwrite($imgfile, $str);<br />
echo $str;<br />
}<br />
fclose($imgfile);<br />
}<br />
sqlsrv_free_stmt( $strSql );<br />
sqlsrv_close( $conn );<br />
?></pre><br />
推荐答案
spUserID =
spUserID =
_GET ["userID"];< br/> < br/>
_GET["userID"];<br /> <br />
serverName =(local)";< br/>
serverName = "(local)";<br />
这篇关于使用webClient OpenReadAsync将图像从PHP检索到Silverlight的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!