Вы можете использовать класс WebClient для загрузки файла в
private void UploadFile()
{
FileStream _data; // The file stream to be read
string uploadUri;
byte[] fileContent = new byte[_data.Length];
int bytesRead = _data.Read(fileContent, 0, CHUNK_SIZE);
WebClient wc = new WebClient();
wc.OpenWriteCompleted += new OpenWriteCompletedEventHandler(wc_OpenWriteCompleted);
Uri u = new Uri(uploadUri);
wc.OpenWriteAsync(u, null, new object[] { fileContent, bytesRead });
}
void wc_OpenWriteCompleted(object sender, OpenWriteCompletedEventArgs e)
{
if (e.Error == null)
{
// Upload completed without error
}
}
На стороне сервера вы можете обращаться как
public void ProcessRequest(HttpContext context)
{
if (context.Request.InputStream.Length == 0)
throw new ArgumentException("No file input");
if (context.Request.QueryString["fileName"] == null)
throw new Exception("Parameter fileName not set!");
string fileName = context.Request.QueryString["fileName"];
string filePath = @HostingEnvironment.ApplicationPhysicalPath + "/" + fileName;
bool appendToFile = context.Request.QueryString["append"] != null && context.Request.QueryString["append"] == "1";
FileMode fileMode;
if (!appendToFile)
{
if (File.Exists(filePath))
File.Delete(filePath);
fileMode = FileMode.Create;
}
else
{
fileMode = FileMode.Append;
}
using (FileStream fs = File.Open(filePath, fileMode))
{
byte[] buffer = new byte[4096];
int bytesRead;
while ((bytesRead = context.Request.InputStream.Read(buffer, 0, buffer.Length)) != 0)
{
fs.Write(buffer, 0, bytesRead);
}
fs.Close();
}
}
Надеется, что это поможет.
Я не понимаю ваш «код на стороне сервера». Сервер, который получит данные shuold, имеет этот код? Итак, есть небольшая проблема: мой serwer с php не C#. – kramo
Я не работал с PHP. но в C# «Код на стороне сервера» означает всякий раз, когда вы вызываете какую-либо страницу, такую как Home.aspx с клиентской стороны, На стороне сервера при загрузке страницы мы можем обрабатывать выше «Код на стороне сервера». – Dany
Я использовал ваш код, меняю только одну строку 'FileStream _data = (FileStream) e.ChosenPhoto; 'где e.ChoosenPhoto является результатом PhotoChooserTask. Сервер не получил никакого запроса от этого кода. – kramo