473,388 Members | 1,493 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,388 software developers and data experts.

HttpWebRequest file upload problem

I am trying to code a file uploader (for forum/email attachments) from the
client computer to a remote web server via the PUT method (since POST is not
allowed [405 error]). However, the upload works ONLY when the file is inside
a shared folder on my computer. If I try to upload from any other folder it
does not work. Why is this?

Reason being that whenever I upload files on other forums or websites I know
I don't need to have my folder shared on my network. I just enter a path and
do it. Am I missing a setting on the remote server? Am I coding something
wrong? Please help. Here is my code:

// Upload the file to a web server using the HttpWebRequest object
string strAttachFile = "C:\temp\blah.txt";
HttpWebRequest myHttpWebRequest =
(HttpWebRequest)WebRequest.Create("http://localhost/myFile.txt"); // The
server path and name of the file we are saving
BinaryReader rdr = new BinaryReader(File.OpenRead(@strAttachFile)); // The
client path and name of the file we are uploading
byte[] data = rdr.ReadBytes((int)rdr.BaseStream.Length);
myHttpWebRequest.Method = "PUT";
myHttpWebRequest.ContentType = "application/x-www-form-urlencoded";
myHttpWebRequest.SendChunked = true;
myHttpWebRequest.Timeout = 10000;
myHttpWebRequest.ContentLength = data.Length;
myHttpWebRequest.KeepAlive = true;
Stream s = myHttpWebRequest.GetRequestStream();
s.Write(data, 0, data.Length);
s.Close();
HttpWebResponse myHttpWebResponse =
(HttpWebResponse)myHttpWebRequest.GetResponse();
myHttpWebResponse.Close();
Nov 16 '05 #1
4 14446
Hi there -

what is the exception that's being thrown? What are the permissions that the
app runs with?
If you're starting it from a web site, you might have problems with the Code
Access Security policies on the machine ...

Can you please be more specific about the enviornment you/your users are
gonna use?

Cheers,
Branimir

--
Branimir Giurov
MCSD.NET, MCDBA
www.sofiadev.org

"R Reyes" <RR****@discussions.microsoft.com> wrote in message
news:51**********************************@microsof t.com...
I am trying to code a file uploader (for forum/email attachments) from the
client computer to a remote web server via the PUT method (since POST is
not
allowed [405 error]). However, the upload works ONLY when the file is
inside
a shared folder on my computer. If I try to upload from any other folder
it
does not work. Why is this?

Reason being that whenever I upload files on other forums or websites I
know
I don't need to have my folder shared on my network. I just enter a path
and
do it. Am I missing a setting on the remote server? Am I coding
something
wrong? Please help. Here is my code:

// Upload the file to a web server using the HttpWebRequest object
string strAttachFile = "C:\temp\blah.txt";
HttpWebRequest myHttpWebRequest =
(HttpWebRequest)WebRequest.Create("http://localhost/myFile.txt"); // The
server path and name of the file we are saving
BinaryReader rdr = new BinaryReader(File.OpenRead(@strAttachFile)); //
The
client path and name of the file we are uploading
byte[] data = rdr.ReadBytes((int)rdr.BaseStream.Length);
myHttpWebRequest.Method = "PUT";
myHttpWebRequest.ContentType = "application/x-www-form-urlencoded";
myHttpWebRequest.SendChunked = true;
myHttpWebRequest.Timeout = 10000;
myHttpWebRequest.ContentLength = data.Length;
myHttpWebRequest.KeepAlive = true;
Stream s = myHttpWebRequest.GetRequestStream();
s.Write(data, 0, data.Length);
s.Close();
HttpWebResponse myHttpWebResponse =
(HttpWebResponse)myHttpWebRequest.GetResponse();
myHttpWebResponse.Close();

Nov 16 '05 #2
R Reyes wrote:
Two different web servers I have tried, here they are

Here is the first on a remote web server. I think this is probably a
permissions error and am trying to figure out exactly which ones
because read/write are granted...
File upload failed: System.Net.WebException: The remote server
returned an error: (405) Method Not Allowed.
at System.Net.HttpWebRequest.CheckFinalStatus()
at System.Net.HttpWebRequest.EndGetResponse(IAsyncRes ult
asyncResult) at System.Net.HttpWebRequest.GetResponse()
at myProject.ForumSubmit.uploadFile(String strAttachFile) in
C:\Inetpub\wwwroot\myProject\ForumSubmit.aspx.cs:l ine 181
What did you try? A PUT? A POST?
Here is the second connection which is just to another folder on my
computer...I also have folder with read/write access so I am not sure
why access is denied.
File upload failed: System.UnauthorizedAccessException: Access to the
path "C:\public\tempFiles\work\docs\myDoc_.doc" is denied.
at System.IO.__Error.WinIOError(Int32 errorCode, String str)
at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess
access, FileShare share, Int32 bufferSize, Boolean useAsync, String
msgPath, Boolean bFromProxy)
at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess
access, FileShare share)
at System.IO.File.OpenRead(String path)
at myProject.ForumSubmit.uploadFile(String strAttachFile) in
c:\inetpub\wwwroot\myProject\forumsubmit.aspx.cs:l ine 170
Does the ASP.NET process have write permission for
C:\public\tempFiles\work\docs?
I'm not sure why it's not working or why a folder needs certain
access.
Because of security? It's not a good idea to allow exposed services like a
web server or an application server to do everything on your production
server.
Whenever I try uploading files from my computer to any forum
online they don't need to see my folders as having shared access. I
just choose the file click Submit and it works fine for them. So why
not here?


What has this to do with shared folders on your system? All you need is to
understand the security implications and configure your system accordingly.

Cheers,

--
Joerg Jooss
jo*********@gmx.net
Nov 16 '05 #3
R Reyes wrote:
both actually, but the one that works is PUT. i don't think there is
a problem with the code since it works some times.
Note that in case of PUT,
myHttpWebRequest.ContentType="application/x-www-form-urlencoded";
should rather be the uploaded file's content type, not a form submit.
Actually, this content type is always wrong -- no browser performs file
uploads this way.
it only breaks
when i am switching folders from the shared folders on my computer to
the unshared ones.


Excuse my ignorance, but I'm still not sure what a shared folder really is?
A file share? Again, the key is allowing the web server process (PUT) or the
application server process (POST) to write to target directory.

Cheers,

--
Joerg Jooss
jo*********@gmx.net
Nov 16 '05 #4
both actually, but the one that works is PUT. i don't think there is a
problem with the code since it works some times. it only breaks when i am
switching folders from the shared folders on my computer to the unshared
ones. but like i said, having them shared shouldn't matter because if i'm
able to upload to different websites then it shouldn't have to be different
with my project.

Here is my code:
strAttachFile = "C:\temp\blah.txt";
string strFileName = strAttachFile;
strFileName = Path.GetFileName(strFileName);
// Upload the file to a web server using the HttpWebRequest object
// When we create the object we will provide the server path
// and name of the file we are saving
// HttpWebRequest myHttpWebRequest =
(HttpWebRequest)WebRequest.Create("http://www.somelocation.com:8080/"+strFileName);
// The client path and name of the file we are uploading
BinaryReader rdr = new BinaryReader(File.OpenRead(@strAttachFile));
byte[] data = rdr.ReadBytes((int)rdr.BaseStream.Length);
myHttpWebRequest.Method = "PUT";
myHttpWebRequest.ContentType = "application/x-www-form-urlencoded";
myHttpWebRequest.SendChunked = true;
myHttpWebRequest.Timeout = 10000;
myHttpWebRequest.ContentLength = data.Length;
myHttpWebRequest.KeepAlive = true;
Stream s = myHttpWebRequest.GetRequestStream();
s.Write(data, 0, data.Length);
s.Close();
HttpWebResponse myHttpWebResponse =
(HttpWebResponse)myHttpWebRequest.GetResponse();
myHttpWebResponse.Close();

"Joerg Jooss" wrote:
R Reyes wrote:
Two different web servers I have tried, here they are

Here is the first on a remote web server. I think this is probably a
permissions error and am trying to figure out exactly which ones
because read/write are granted...
File upload failed: System.Net.WebException: The remote server
returned an error: (405) Method Not Allowed.
at System.Net.HttpWebRequest.CheckFinalStatus()
at System.Net.HttpWebRequest.EndGetResponse(IAsyncRes ult
asyncResult) at System.Net.HttpWebRequest.GetResponse()
at myProject.ForumSubmit.uploadFile(String strAttachFile) in
C:\Inetpub\wwwroot\myProject\ForumSubmit.aspx.cs:l ine 181


What did you try? A PUT? A POST?
Here is the second connection which is just to another folder on my
computer...I also have folder with read/write access so I am not sure
why access is denied.
File upload failed: System.UnauthorizedAccessException: Access to the
path "C:\public\tempFiles\work\docs\myDoc_.doc" is denied.
at System.IO.__Error.WinIOError(Int32 errorCode, String str)
at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess
access, FileShare share, Int32 bufferSize, Boolean useAsync, String
msgPath, Boolean bFromProxy)
at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess
access, FileShare share)
at System.IO.File.OpenRead(String path)
at myProject.ForumSubmit.uploadFile(String strAttachFile) in
c:\inetpub\wwwroot\myProject\forumsubmit.aspx.cs:l ine 170


Does the ASP.NET process have write permission for
C:\public\tempFiles\work\docs?
I'm not sure why it's not working or why a folder needs certain
access.


Because of security? It's not a good idea to allow exposed services like a
web server or an application server to do everything on your production
server.
Whenever I try uploading files from my computer to any forum
online they don't need to see my folders as having shared access. I
just choose the file click Submit and it works fine for them. So why
not here?


What has this to do with shared folders on your system? All you need is to
understand the security implications and configure your system accordingly.

Cheers,

--
Joerg Jooss
jo*********@gmx.net

Nov 16 '05 #5

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

4
by: supster | last post by:
Hello, I am trying to use HttpWebRequest to simulate sending some POST data from a form to a PHP script. I have accomplished this using: HttpWebRequest req = (HttpWebRequest)...
8
by: Du | last post by:
I'm trying to automate the upload process to yousendit.com, but the file size doesn't add up and yousendit.com keep rejecting my upload (it accepts the upload until the very end) I don't know...
0
by: Brett | last post by:
I'd like to upload a file in vb.net vis POST using HttpWebRequest. It needs to simulate some one using a webform. The webform works fine when I manually upload through the web browser. However,...
0
by: Roland Riess | last post by:
Hi, as an absolute web and configuration beginner I am stuck with a problem and so I finally seek your help again: Development tools: ASP.NET 1.1, C#, VS 2003, Windows 2000 SP4, IIS 5.0 I...
1
by: Gert Conradie | last post by:
The following code can uplaod text files. When i upload a binary file it fail. I might be: 1) using the wrong Encoding 2) will have to System.Convert.ToBase64String the content of the binary...
7
by: Marc Bartsch | last post by:
Hi, I have a background worker in my C# app that makes a synchronous HttpWebRequest.GetResponse() call. The idea is to POST a file to a server on the internet. When I call HttpWebRequest.Abort()...
3
by: =?Utf-8?B?UGF1bA==?= | last post by:
I need to programatically upload a text file to a web server using the HTTPWebRequest object within .Net 2.0. So far, I have determined that: - I need a HTTP content-type of...
1
by: Proogeren | last post by:
I have a problem with a httpwebrequest that I am creating. The request in itself looks correct but using fiddler I see that a www-authentication header is sent along as well. The code is pasted...
5
by: kamlesh20J | last post by:
Hello, I am trying to use HttpWebRequest to send some POST data I have accomplished this using: HttpWebRequest req = (HttpWebRequest) WebRequest.Create("http://mysite.com/index.php");...
0
by: taylorcarr | last post by:
A Canon printer is a smart device known for being advanced, efficient, and reliable. It is designed for home, office, and hybrid workspace use and can also be used for a variety of purposes. However,...
0
by: Charles Arthur | last post by:
How do i turn on java script on a villaon, callus and itel keypad mobile phone
0
by: ryjfgjl | last post by:
If we have dozens or hundreds of excel to import into the database, if we use the excel import function provided by database editors such as navicat, it will be extremely tedious and time-consuming...
0
BarryA
by: BarryA | last post by:
What are the essential steps and strategies outlined in the Data Structures and Algorithms (DSA) roadmap for aspiring data scientists? How can individuals effectively utilize this roadmap to progress...
1
by: nemocccc | last post by:
hello, everyone, I want to develop a software for my android phone for daily needs, any suggestions?
0
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However,...
0
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can...
0
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven...
0
by: Hystou | last post by:
Overview: Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.