gpt4 book ai didi

Silverlight 4 RC 文件上传,上传进度为 : how to?

转载 作者:行者123 更新时间:2023-12-04 03:16:50 24 4
gpt4 key购买 nike

据说 Silverlight 4 RC 的新功能之一是它现在支持上传进度。

我假设这意味着可以在没有“分块”的情况下制作上传文件进度条,但我不知道该怎么做,那么我们该怎么做呢?源代码示例会很棒。

谢谢!

最佳答案

好吧,经过大量的尝试,我明白了:

   private void UploadFile(string url, CustomPostDataInfo pdi)
{

// Use the client http stack!

//HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(url);
HttpWebRequest webRequest = (HttpWebRequest)WebRequestCreator.ClientHttp.Create(new Uri(url));

webRequest.AllowWriteStreamBuffering = false; // <-- this enables upload progress reporting!

webRequest.Method = "POST";
webRequest.ContentType = "multipart/form-data; boundary=" + pdi.Boundary; // Boundary only needed for multipart form ada

// Calculate our response length
webRequest.ContentLength = pdi.FormDataHeader.Length + pdi.File2Upload.Length + pdi.FormDataFooter.Length; // Calculate the length of your entire message here, required

pdi.request = webRequest;

webRequest.BeginGetRequestStream(new AsyncCallback(WriteToStreamCallback), pdi);
}

private void WriteToStreamCallback(IAsyncResult asynchronousResult)
{
CustomPostDataInfo pdi = (AmazonS3PostDataInfo)asynchronousResult.AsyncState;
HttpWebRequest webRequest = pdi.request;
Stream requestStream = webRequest.EndGetRequestStream(asynchronousResult);
UTF8Encoding encoding = new UTF8Encoding();

UpdateShowProgress(false, "Uploading file..."); // Your custom update event - make sure to use a Dispatcher to update on the UI thread as this is running on a separate thread.

// Write any pre file data if needed
// ...

// Write our file data
{
// Read chunks of this file
byte[] buffer = new Byte[1024 * 32];
Stream fileStream = pdi.File2Upload.OpenRead();
int bytesRead = 0;
while ((bytesRead = fileStream.Read(buffer, 0, buffer.Length)) != 0)
{
requestStream.Write(buffer, 0, bytesRead);
requestStream.Flush(); // Will block until data is sent

bytesUploaded += bytesRead;

//Show the progress change
UpdateShowProgress(false, "Uploading file...");
}
}

// Write any post file data
// ...

UpdateShowProgress(false, "Uploaded, waiting for response...");

requestStream.Close();

// Get the response from the HttpHandler
webRequest.BeginGetResponse(new AsyncCallback(ReadHttpResponseCallback), webRequest);

}

private void ReadHttpResponseCallback(IAsyncResult asynchronousResult)
{
HttpWebRequest webRequest = (HttpWebRequest)asynchronousResult.AsyncState;
HttpWebResponse webResponse = (HttpWebResponse)webRequest.EndGetResponse(asynchronousResult);
StreamReader reader = new StreamReader(webResponse.GetResponseStream());

string response = reader.ReadToEnd(); // Get the result

reader.Close();

UpdateShowProgress(true, response);
}

关于Silverlight 4 RC 文件上传,上传进度为 : how to?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2529558/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com