0
hizmet ve bu işlevi sorun yaşıyorum: Böyle bir şey denedimyükle dosyaları yüzden Windows 8.1 uygulaması ile çalışacak <a href="http://www.kaltura.com/api_v3/testme/client-libs.php" rel="nofollow">Kaltura API</a> adapte etmeye çalışıyorum
private void PostMultiPartWithFiles(HttpWebRequest request, KalturaParams kparams, KalturaFiles kfiles)
{
string boundary = "---------------------------" + DateTime.Now.Ticks.ToString("x");
request.ContentType = "multipart/form-data; boundary=" + boundary;
// use a memory stream because we don't know the content length of the request when we have multiple files
MemoryStream memStream = new MemoryStream();
byte[] buffer;
int bytesRead = 0;
StringBuilder sb = new StringBuilder();
sb.Append("--" + boundary + "\r\n");
foreach (KeyValuePair<string, string> param in kparams)
{
sb.Append("Content-Disposition: form-data; name=\"" + param.Key + "\"" + "\r\n");
sb.Append("\r\n");
sb.Append(param.Value);
sb.Append("\r\n--" + boundary + "\r\n");
}
buffer = Encoding.UTF8.GetBytes(sb.ToString());
memStream.Write(buffer, 0, buffer.Length);
foreach (KeyValuePair<string, FileStream> file in kfiles)
{
sb = new StringBuilder();
FileStream fileStream = file.Value;
sb.Append("Content-Disposition: form-data; name=\"" + file.Key + "\"; filename=\"" + Path.GetFileName(fileStream.Name) + "\"" + "\r\n");
sb.Append("Content-Type: application/octet-stream" + "\r\n");
sb.Append("\r\n");
// write the current string builder content
buffer = Encoding.UTF8.GetBytes(sb.ToString());
memStream.Write(buffer, 0, buffer.Length);
// write the file content
buffer = new Byte[checked((uint)Math.Min(4096, (int)fileStream.Length))];
bytesRead = 0;
while ((bytesRead = fileStream.Read(buffer, 0, buffer.Length)) != 0)
memStream.Write(buffer, 0, bytesRead);
buffer = Encoding.UTF8.GetBytes("\r\n--" + boundary + "\r\n");
memStream.Write(buffer, 0, buffer.Length);
}
request.ContentLength = memStream.Length;
Stream requestStream = request.GetRequestStream();
// write the memorty stream to the request stream
memStream.Seek(0, SeekOrigin.Begin);
buffer = new Byte[checked((uint)Math.Min(4096, (int)memStream.Length))];
bytesRead = 0;
while ((bytesRead = memStream.Read(buffer, 0, buffer.Length)) != 0)
requestStream.Write(buffer, 0, bytesRead);
requestStream.Close();
memStream.Close();
}
:
private void PostMultiPartWithFiles(HttpWebRequest request, KalturaParams kparams, KalturaFiles kfiles)
{
using (request)
{
string boundary = "---------------------------" + DateTime.Now.Ticks.ToString("x");
MultipartFormDataContent content = new MultipartFormDataContent(boundary);
foreach (KeyValuePair<string, string> param in kparams)
{
Stream fileStream = await new StringContent(param.Value).ReadAsStreamAsync();
StreamContent streamContent = new StreamContent(fileStream);
streamContent.Headers.Add("Content-Disposition", "form-data; name=\"" + param.Key + "\"");
content.Add(streamContent);
}
foreach (var file in kfiles)
{
StorageFile storageFile = await Windows.Storage.StorageFile.GetFileFromPathAsync(file.Value.Path);
var randomAccessStream = await storageFile.OpenReadAsync();
Stream stream = randomAccessStream.AsStreamForRead();
StreamContent streamContent = new StreamContent(stream);
content.Headers.Add("Content-Disposition", "form-data; name=\"" + file.Key + "\"; filename=\"" + file.Value.Name + "\"");
content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
content.Add(streamContent, "fileData", file.Value.Path);
}
}
}
Fakat çalışmıyor. fileData
'un bağlı olmadığını söylüyor. Daha önce hiç bu web ile ilgili ile çalışmıyorum, bu yüzden hepsini yanlış yapıyorum.
"Content-Transfer-Encoding: binary" öğesini eklerseniz ne olur? – Nyerguds
Bekle, amacın tam olarak burada ne var? Bir sebepten ötürü kodun ilk bloğunu yeniden mı yazıyorsunuz? İkincisi, aslında oluşturulan 'MultipartFormDataContent' nesnesini _uses_ herhangi bir kod eksik olduğundan. – Nyerguds
@Nyerguds Bunu tam olarak nereye ekleyelim? Oluşturulan 'MultipartFromDataContent' özelliğini nasıl kullanabilirim? Gerçekten bilmiyorum, ilk verilen kodun nasıl yeniden yazılacağını, böylece Windows 8.1 uygulamasında çalışacaktı. – dace