Re: FileUpload

Tech-Archive recommends: Repair Windows Errors & Optimize Windows Performance



Hallo Stefan,

keine Sorge, das ist nur ein Beispielcode den ich bekommen habe.
Die richtige Verbindung geht natürlich über HTTPS.

Mich interessier eigentlich nur ob man das was im Beispielcode mit der
HttpWebRequest Klasse gemacht wird auch mit WebClient.UploadFile möglich ist.
In der WebClient Klasse finde ich keine Möglichkeit den CookieContainer zu setzen
und wie kann ich
string stringDataRFC = boundary + "\n" +
"Content-disposition: form-data; name=\"multiple\"\n\n" + "false\n" + boundary + "\n" +
"Content-Disposition: form-data; name=\"id\"\n\n" + issueID + "\n" + boundary + "\n" +
"Content-Disposition: form-data; name=\"Attach\"\n\n" + "Attach\n" + boundary + "\n";
...
damit realisieren? Ist WebClient.UploadFile für sowas gedacht?

Gruß
Ralf

"Stefan Braumeister" <sbraumi@xxxxxxx> schrieb im Newsbeitrag news:f833gq$ifs$1@xxxxxxxxxxxx
Ralf schrieb:
Hallo,

ich hab folgenden Beispielcode bekommen, um einen Datei Upload von .NET
aus durchzuführen. (UploadFileWithPost)
Dieser Code ist recht aufwendig und ich hab versucht das Gleiche mit
UploadFile zu machen, hatte aber keinen Erfolg. (siehe
AddAttachmentToIssue2)
Kann mir jemand sagen, was noch fehlt und ob das überhaupt mit
UploadFile geht?

Gruß
Ralf

private bool UploadFileWithPost( string filename, string issueID )
{
try
{
string loginUrl = "http://localhost:8080/secure/AttachFile.jspa"+ "?id="
+ issueID + "&os_username=" + loginName + "&os_password=" + password;

ich hab jetzt gar nicht weitergelesen, Username und Passwort im Klartext
als HTTP Get - *LOL*. Vor allem das secure im Link


// Create the bytes array for the file to upload.
FileInfo fileInfo = new FileInfo(filename);
if (!fileInfo.Exists)
{
return false;
}
HttpWebRequest webRequestRFC = (HttpWebRequest)WebRequest.Create(loginUrl);
webRequestRFC.CookieContainer = new CookieContainer();
// Auth with server, and fetch cookie for session ID
System.IO.StreamReader responseReader = new
System.IO.StreamReader(webRequestRFC.GetResponse().GetResponseStream());
string responseData = responseReader.ReadToEnd();
responseReader.Close();
// Create 2nd request
HttpWebRequest webRequestRFC2 =
(HttpWebRequest)WebRequest.Create("http://localhost:8080/secure/AttachFile.jspa";);

// Copy cookie
webRequestRFC2.CookieContainer = webRequestRFC.CookieContainer;
// Generate random boundary, should really be random rather than a fixed
string like this
string boundary = "-----------AaB03x--";
string stringDataRFC =
boundary + "\n" +
"Content-disposition: form-data; name=\"multiple\"\n\n" +
"false\n" +
boundary + "\n" +
"Content-Disposition: form-data; name=\"id\"\n\n" +
issueID + "\n" +
boundary + "\n" +
"Content-Disposition: form-data; name=\"Attach\"\n\n" +
"Attach\n" +
boundary + "\n";
stringDataRFC += "Content-Disposition: form-data; name=\"filename.1\";
filename=\"" + filename + "\"\n" +
"Content-Type: application/octet-stream\n\n";
string strEndTag = "\n" + boundary + "\n";
byte[] dataEndTag = Encoding.UTF8.GetBytes(strEndTag);
byte[] dataRFCbytes = Encoding.UTF8.GetBytes(stringDataRFC);
webRequestRFC2.Method = "POST";
webRequestRFC2.Accept = "image/gif, image/x-xbitmap, image/jpeg,
image/pjpeg, application/vnd.ms-excel, application/vnd.ms-powerpoint,
application/msword, application/x-shockwave-flash, */*";
webRequestRFC2.ContentType = "multipart/form-data; boundary=" + boundary;
webRequestRFC2.ContentLength = dataRFCbytes.Length + dataEndTag.Length +
fileInfo.Length;
System.IO.Stream newStream = webRequestRFC2.GetRequestStream();
newStream.Write(dataRFCbytes, 0, dataRFCbytes.Length);
// Copy file
System.IO.FileStream fileStream = new System.IO.FileStream(filename,
System.IO.FileMode.Open);
BinaryReader binFileReader = new BinaryReader(fileStream);
System.IO.BinaryWriter binWriter = new System.IO.BinaryWriter(newStream);

int bufSize = 1024;
byte[] buf = new byte[bufSize];
int read = 0;
int total = 0;
while ((read = binFileReader.Read(buf, 0, bufSize)) != 0)
{
total += read;
binWriter.Write(buf, 0, read);
}
// Copy end of tag
newStream.Write(dataEndTag, 0, dataEndTag.Length);
newStream.Close();
binWriter.Close();
binFileReader.Close();
fileStream.Close();
return true;

}
catch (Exception ex)
{
}
}

----------------------------------------------------------------------------------------------------------------------------------------------------------------------


public bool AddAttachmentToIssue2(RemoteIssue issue, string fileName,
string filePath)
{
string url = this.url
+ "/secure/AttachFile.jspa"
+ "?os_username=" + Uri.EscapeDataString(this.username)
+ "&os_password=" + Uri.EscapeDataString(this.password)
+ "&multiple=" + "false"
+ "&filename.1=" + Uri.EscapeDataString(filePath)
+ "&comment=" + ""
+ "&commentLevel=" + Uri.EscapeDataString("group:jira-users")
+ "&id=" + issue.id;
WebClient webClient = new WebClient();
byte[] res = webClient.UploadFile(new Uri(url), filePath);
string html = Encoding.ASCII.GetString(res);
return true;
}

.



Relevant Pages

  • Re: FileUpload
    ... Mich interessier eigentlich nur ob man das was im Beispielcode mit der ... HttpWebRequest Klasse gemacht wird auch mit WebClient.UploadFile möglich ... private bool UploadFileWithPost(string filename, string issueID) ...
    (microsoft.public.de.german.entwickler.dotnet.csharp)
  • Re: HttpRequest Question
    ... The code that Patrice provided seems to be doing the same thing. ... What I believe to be happening is that the HttpWebRequest Object is parsing the XML much like a browser would. ... If you browse out to the link that the code is requesting and "view source" you'll see the raw xml, however if you look at what my code is outputting you can see that you get the transformed document instead. ... //Convert the data into a string ...
    (microsoft.public.dotnet.framework.aspnet)
  • Re: Modify exchange security descriptor
    ... You could use the security module in the SDK. ... > HttpWebRequest request = WebRequest.Create; ... > HttpWebResponse response = request.GetResponse; ... > string strStatus = response.StatusCode.ToString; ...
    (microsoft.public.exchange2000.development)
  • Re: byte array problem
    ... the HttpWebRequest to send the XML data via HTTP POST? ... but it becomes a string at the other end. ... HttpWebRequest IoHttp = WebRequest.Create; ... > To receive the byte array from the client should I be using ...
    (microsoft.public.dotnet.framework.aspnet)
  • Re: post to an alternate non dot.net page
    ... WebClient myWebClient = new WebClient; ... // Apply ASCII Encoding to obtain the string as a byte array. ... but i'm not integrating with UPS. ... windows that on post back will open a new window, ...
    (microsoft.public.dotnet.framework.aspnet)