Upload Prizeneho Foto na FTP   otázka

C#, Windows Phone

Dobrý večer,

chtěl bych požádat o radu.

Mám aplikaci kterou je možné pořizovat foto.

public PhotoCapture()
        {
            InitializeComponent();
            cameraCaptureTask = new CameraCaptureTask();
            cameraCaptureTask.Completed += new EventHandler<PhotoResult>(cameraCaptureTask_Completed);
        }
void cameraCaptureTask_Completed(object sender, PhotoResult e)
        {
            if (e.TaskResult == TaskResult.OK)
            {

                BitmapImage bmp = new BitmapImage();

                bmp.SetSource(e.ChosenPhoto);
                string name = e.OriginalFileName;             


            }
        }


        private void Button_Click(object sender, RoutedEventArgs e)
        {
            cameraCaptureTask.Show();
        }

Našel jsem kód na microsoft foru, ale nefunguje mi.

Konkretně

CameraCaptureUI()

protected async void TakePictureAndUpload()
{
  var ui = new CameraCaptureUI();
  var file = await ui.CaptureFileAsync(CameraCaptureUIMode.Photo);
  if (file != null)
  {    
    /* Convert File to array of byte */
    byte[] myPicArray = await GetPhotoBytesAsync(file);
    HttpClient httpClient = new HttpClient();
    httpClient.BaseAddress = new Uri("http://yourdomainname.com");
    
    MultipartFormDataContent form = new MultipartFormDataContent();
    HttpContent content = new ByteArrayContent(myPicArray);
    form.Add(content, "media", "filename.jpg");
    content = new StringContent("my-username");
    form.Add(content, "username");
    HttpResponseMessage response = await httpClient.PostAsync("directory/my-site.php", form);
  }
}
public async Task<byte[]> GetPhotoBytesAsync(StorageFile file)
{
  IRandomAccessStream fileStream = await file.OpenAsync(FileAccessMode.Read);
  var reader = new Windows.Storage.Streams.DataReader(fileStream.GetInputStreamAt(0));
  await reader.LoadAsync((uint)fileStream.Size);

  byte[] pixels = new byte[fileStream.Size];
  reader.ReadBytes(pixels);
  return pixels;
}

Chtěl bych se tedy zeptat, jak odešlu pořízené foto na FTP?

Popř jak ho přejmenují, s tím si taky lámu hlavu.

Děkuji předem

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Dobry den,

Kod ktery jste "nasel" je upload pres protokol HTTP nikoliv FTP.

Upload pres FTP vysvetlen treba zde http://msdn.microsoft.com/library/ms2297....

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Díky,

ono ja vlastně potřebují aby se ten soubor uploadnul na ftp asi pomoci

HttpClient();

a zároveň se cesta (v ftp) uložila do určené tabulky v DB.

Na to jsem si už vytvořil php script který přebere údaje pomoci GET, ale nevím jak pomocí GETka předám PHP scriptu ten soubor (.jpg, atd..)

Takhle mám registraci:

string Url = "http://www.xxxxx.net/2048/?p=mobile_reg_xy86541";
string Parameters = "&email=" + Email + "&name=" + Full_Name + "&password=" + Password;
HttpClient httpClient = new HttpClient();
string responseBodyAsText = await httpClient.GetStringAsync(Url + Parameters);

Takže by to mělo být podobný.

Jen nevím jak pomoci GET request předat ten soubor.

Snad jste mě pochopil.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Podle mě máte dvě možnosti:

1) Windows Phone aplikace odešle soubor serveru pomoci HTTP/POST a server provede obě akce tj. uložení přijatého souboru na FTP a uložení záznamu do databáze. Server přitom může být např. ASP.NET WebAPI nebo třeba i to PHP. V tomto scénáři by bylo to odeslání tím vaším nalezeným kódem s použitím httpClienta a PostAsync().

2) Windows Phone aplikace nezávisle uloží soubor na FTP a potom když se to povede provede HTTP GET požadavek na server, který provede uložení záznamu do databáze. Server bude opět ASP.NET WebAPI, PHP něco cokoliv jiného. V tomto případě nemůžete ale pro to odeslání souboru na FTP použít HttpClienta, protože ten to neumí. Musíte použít nějakou knihovnu (asi třetích stran) pro WP, která FTP umí. Ve standardních BCL podpora pro FTP podle mě není, ale tím si nejsem na 100% jist.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Ta první možnost vypadá líp.

Ten kód co jsem našel mi nefunguje. Konkretně tenhle kus kódu.

var ui = new CameraCaptureUI();
var file = await ui.CaptureFileAsync(CameraCaptureUIMode.Photo);

Jelikož nevím co mám dat do toho

var file =

a

var ui = 

v mém případě když foto pořizuji

void cameraCaptureTask_Completed(object sender, PhotoResult e)
        {
            if (e.TaskResult == TaskResult.OK)
            {
 
                BitmapImage bmp = new BitmapImage();
 
                bmp.SetSource(e.ChosenPhoto);           
 
 
            }
        }

Takže tam neznám ani název pořízené fotky, jelikož se automaticky ukládá jako WP_DATUM_CISLOFOTKY.jpg

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Podle článku

http://msdn.microsoft.com/en-us/library/...

CameraCaptureUI na Windows Phone není (pouze na Windows 8).

Zkuste se kouknout na ten odkazovaný článek "Quickstart: capturing video by using the MediaCapture api":

http://msdn.microsoft.com/en-us/library/...

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback