Windows Phone Upload Send file to Server (Web Server) |
Windows Phone Upload Send file to Server (Web Server) บทความการใช้ Windows Phone และการเขียน App เพื่อทำการ Upload (อัพโหลด) ไฟล์ที่อยู่ใน Isolated Storage ไปยัง Web Server ซึ่งใน Web Server จะใช้ php ทำหน้าที่รอรับไฟล์ และเขียนไฟล์ที่ได้ลงบน Web Server โดยใช้ Class และ Fucntion ของ WebClient และ OpenWriteAsync ที่ทำหน้าที่รับส่งไฟล์ระหว่าง Windows Phone กับ PHP ที่อยู่ใน Web Server
Windows Phone Upload Send file to Server
upload.php
<?php
$filename = "img/".$_REQUEST["file"];
$file = fopen($filename,"w");
$input = file_get_contents ("php://input");
fwrite($file,$input);
fclose($file);
?>
ใน Web Server สามารถใช้ PHP รับค่าและเขียนไฟล์ด้วย file_get_contents
รายชื่อไฟล์ที่อยู่ใน Isolated Storage บน Application ของ Windows Phone
Windows Phone Project
MainPage.xaml
<!--LayoutRoot is the root grid where all page content is placed-->
<Grid x:Name="LayoutRoot" Background="Transparent">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<!--TitlePanel contains the name of the application and page title-->
<StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,28">
<TextBlock x:Name="ApplicationTitle" Text="MY APPLICATION" Style="{StaticResource PhoneTextNormalStyle}"/>
<TextBlock x:Name="PageTitle" Text="page name" Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}"/>
</StackPanel>
<!--ContentPanel - place additional content here-->
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
<TextBlock Height="64" HorizontalAlignment="Left" Margin="9,273,0,0" Name="txtResult" Text="Result" VerticalAlignment="Top" Width="441" TextAlignment="Center" FontSize="40" />
</Grid>
</Grid>
MainPage.xaml.vb (VB.NET)
Imports System.Runtime.Serialization
Imports System.Runtime.Serialization.Json
Imports System.Collections.ObjectModel
Imports System.IO
Imports System.Text
Imports System.Xml.Linq
Imports System.Windows.Media.Imaging
Imports System.Xml
Imports System.IO.IsolatedStorage
Imports Microsoft.Phone.Tasks
Partial Public Class MainPage
Inherits PhoneApplicationPage
' Constructor
Public Sub New()
InitializeComponent()
AddHandler Loaded, AddressOf MainPage_Loaded
End Sub
Dim client As WebClient
Dim strFileName As String = "img1.jpg"
Private Sub MainPage_Loaded(sender As Object, e As System.Windows.RoutedEventArgs)
Dim ub As New UriBuilder("http://localhost/myphp/upload.php")
ub.Query = "file=" & strFileName
client = New WebClient()
AddHandler client.OpenWriteCompleted, AddressOf client_OpenWriteCompleted
client.OpenWriteAsync(ub.Uri)
End Sub
Private Sub client_OpenWriteCompleted(sender As Object, e As OpenWriteCompletedEventArgs)
If e.Cancelled = False And e.Error Is Nothing Then
Dim image As New BitmapImage()
Dim isoStore As IsolatedStorageFile = IsolatedStorageFile.GetUserStoreForApplication()
Dim isoFilename As String = strFileName
Dim stream As Stream = isoStore.OpenFile(isoFilename, System.IO.FileMode.Open)
Dim output As Stream = e.Result
Dim bytes As Byte() = New Byte(4095) {}
Dim bytesToRead As Integer = 0
While (InlineAssignHelper(bytesToRead, stream.Read(bytes, 0, bytes.Length))) <> 0
output.Write(bytes, 0, bytesToRead)
End While
stream.Close()
output.Close()
Me.txtResult.Text = "Upload Completed."
Else
Me.txtResult.Text = "Upload Failed."
End If
End Sub
Private Shared Function InlineAssignHelper(Of T)(ByRef target As T, ByVal value As T) As T
target = value
Return value
End Function
End Class
MainPage.xaml.cs (C#)
using System;
using System.Windows;
using Microsoft.Phone.Controls;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.IO;
using System.Text;
using Microsoft.Phone.Shell;
using System.Windows.Controls;
using System.Net;
using System.Windows.Media.Imaging;
using System.IO.IsolatedStorage;
namespace PhoneApp
{
public partial class MainPage : PhoneApplicationPage
{
// Constructor
public MainPage()
{
InitializeComponent();
Loaded += MainPage_Loaded;
}
WebClient client;
string strFileName = "img1.jpg";
private void MainPage_Loaded(object sender, System.Windows.RoutedEventArgs e)
{
UriBuilder ub = new UriBuilder("http://localhost/myphp/upload.php");
ub.Query = "file=" + strFileName;
client = new WebClient();
client.OpenWriteCompleted += client_OpenWriteCompleted;
client.OpenWriteAsync(ub.Uri);
}
private void client_OpenWriteCompleted(object sender, OpenWriteCompletedEventArgs e)
{
if (e.Cancelled == false & e.Error == null)
{
BitmapImage image = new BitmapImage();
IsolatedStorageFile isoStore = IsolatedStorageFile.GetUserStoreForApplication();
string isoFilename = strFileName;
Stream stream = isoStore.OpenFile(isoFilename, System.IO.FileMode.Open);
Stream output = e.Result;
byte[] bytes = new byte[4096];
int bytesToRead = 0;
while ((bytesToRead = stream.Read(bytes, 0, bytes.Length)) != 0)
{
output.Write(bytes, 0, bytesToRead);
}
stream.Close();
output.Close();
this.txtResult.Text = "Upload Completed.";
}
else
{
this.txtResult.Text = "Upload Failed.";
}
}
}
}
ในตัวอย่างนี้มี Code ทั้งที่เป็น VB.NET และ C# และสามารถดาวน์โหลด All Code ทั้งหมดได้จากส่วนท้ายของบทความ (Login สมาชิกก่อน)
Screenshot
แสดงการอัพโหลดไฟล์ (Upload)
เมื่อดูไฟล์บน Server จะเห็นว่าไฟล์ได้ถูกสร้างด้วย php
|
ช่วยกันสนับสนุนรักษาเว็บไซต์ความรู้แห่งนี้ไว้ด้วยการสนับสนุน Source Code 2.0 ของทีมงานไทยครีเอท
|
|
|
By : |
ThaiCreate.Com Team (บทความเป็นลิขสิทธิ์ของเว็บไทยครีเอทห้ามนำเผยแพร่ ณ เว็บไซต์อื่น ๆ) |
|
Score Rating : |
|
|
|
Create/Update Date : |
2012-09-15 14:06:06 /
2017-03-25 22:18:36 |
|
Download : |
|
|
Sponsored Links / Related |
|
|
|
|
|
|
|