Title: Re: <put> task?

I created the following two scripts based on some MSDN examples.  These provide basic support for HTTP DELETE & PUT over an anonymous connection.

<script language="C#" prefix="http" >
 <imports>
  <import namespace="System.Net" />
  <import namespace="System.IO" />
 </imports>
 <code>
  <![CDATA[
  [Function("delete-file")]
   static public string DeleteFile(string uploadUrl)
   {
        HttpWebRequest req = (HttpWebRequest)WebRequest.Create(uploadUrl);

        req.Method = "DELETE";
       
        try
        {
                HttpWebResponse r = (HttpWebResponse)req.GetResponse();
                return r.StatusDescription;
        }
        catch (WebException ex)
        {
                if (((HttpWebResponse)ex.Response).StatusCode == HttpStatusCode.NotFound)
                {
                        return ((HttpWebResponse)ex.Response).StatusCode.ToString();
                }
                throw;
        }
   }
  ]]>
  <![CDATA[
  [Function("upload-file")]
   static public string UploadFileBinary(string uploadUrl, string localFile)
   {
        HttpWebRequest req = (HttpWebRequest)WebRequest.Create(uploadUrl);

        req.Method = "PUT";
        //req.AllowWriteStreamBuffering = true;

        // Retrieve request stream
        Stream reqStream = req.GetRequestStream();

        // Open the local file
        FileStream rdr = new FileStream(localFile, FileMode.Open);

        // Allocate byte buffer to hold file contents
        byte[] inData = new byte[rdr.Length];

        // loop through the local file reading each data block
        //  and writing to the request stream buffer
        int bytesRead = rdr.Read(inData, 0, inData.Length);
        while (bytesRead > 0)
        {
                reqStream.Write(inData, 0, bytesRead);
                bytesRead = rdr.Read(inData, 0, inData.Length);
        }

        rdr.Close();
        reqStream.Close();

        HttpWebResponse r = (HttpWebResponse)req.GetResponse();
        return r.StatusDescription;
   }
  ]]>
 </code>
</script>

Reply via email to