Опитвам се да създам качване на файл във flex/air приложение, което изпраща информация до .NET wcf SOAP уеб услуга. Качването на файл също трябва да има напредък, показващ събития. Услугата използва Stream като MessageBodyMember, за да позволи поточно качване. Моят вход изглежда малко по следния начин:
[MessageContract]
public class SendFileRequestMessage : IDisposable
{
public string UserName;
[MessageBodyMember(Order = 1)]
public Stream FileData;
}
и услугата изглежда така:
public interface IFileTransferService
{
[OperationContract]
SendFileResponseMessage SendFile(SendFileRequestMessage request);
}
Сега, когато създавам прокси клас във VS2010, получавам Stream обект за FileData. Ако направя същото във Flash Builder 4.7, FileData се интерпретира като ByteArray. Вече разгледах FileUpload и UrlLoader в моя клиент, но не мога да получа набора от основни елементи. Моят скрипт за действие сега изглежда така не работи
var dataToSave:XML = <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:q0="http://mystuff/uploadservice/v1"><soapenv:Body><q0:SendFile/></soapenv:Body></soapenv:Envelope>
var request:URLRequest = new URLRequest("http://localhost:31454/Uploadhandler.svc");
request.requestHeaders = new Array(new URLRequestHeader("SOAPAction", "http://mystuff/uploadservice/v1/IFileTransferService/SendFile"));
request.data = dataToSave;
request.contentType = "text/xml; charset=utf-8";
request.method = URLRequestMethod.POST;
var loader:URLLoader = new URLLoader();
loader.load(request);
И така, как може да се направи стрийминг файл за качване в сапунена услуга от flex? Всяка помощ ще бъде много ценена.