i have an ASP web services to change byte array that given from the client and change it to a file and save it in the web server
the code is like this :

[WebMethod]
        public string UploadFile(byte[] f, string fileName)
        {
           
            try
            {
               
                MemoryStream ms = new MemoryStream(f);

               
               
            String path="/myfile/";
            String location=HttpContext.Current.Server.MapPath(path);
             FileStream fs = new FileStream(HttpContext.Current.Server.MapPath(path)+fileName, FileMode.Create);
           
         
               
                ms.WriteTo(fs);

               
                ms.Close();
                fs.Close();
               

               
                return "OK";
            }
            catch (Exception ex)
            {
             
                return ex.Message.ToString();
            }
        }

the web services need byte array and file name..
i build the client in php
upload.php

<html>
<body>
<form action="action1.php" method="post" enctype="multipart/form-data">
 Pilih File Anda:
<input type="file" name="myfile" />
<input type="submit" value="Upload" />
</form>
</body>
<html>

and action1.php the code is:

<?php
require_once('nusoap.php');
$client = new nusoap_client('http://192.168.254.160/testuploadah/FileUploader.asmx?WSDL', 'wsdl','','', '', '');
$err = $client->getError();
if ($err) {
echo '<h2>Constructor error</h2><pre>' . $err . '</pre>';
}
if(is_uploaded_file($_FILES['myfile']['tmp_name'])){
    $uploadFile = $_FILES['myfile'];
////how can read byte array of $uploadFile so i can send to web services???
////are php can only send string to web services????
$params=array();
$params->f=???????????????
$params->fileName=$_FILES['myfile']['name'];

$result = $client->call('UploadFile', $params,'', '', false, true);
if ($client->fault) {
echo '<h2>Fault</h2><pre>';
print_r($result);
echo '</pre>';
} else {
 //Check for errors
$err = $client->getError();
if ($err) {
//// Display the error
echo '<h2>Error</h2><pre>' . $err . '</pre>';
} else {
//// Display the result
echo '<h2>Result</h2><pre>';
print_r($result);
echo '</pre>';
}
}
}
?>

how can i Send the byte array parameter to the web services,so the web services can started????

i still can resolve this problem,the web services always return an error because i can't send byte array

Recommended Answers

All 2 Replies

read the file like :-
$byteArr = fread(fopen($_FILES, "r"), filesize($_FILES));

and than wrap the byteArr into base64encode like below :-

base64_encode($byteArr)

This will work surely.

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.