c# picturebox uploaden via FTP

Status
Niet open voor verdere reacties.

henkjan111

Gebruiker
Lid geworden
9 jan 2011
Berichten
221
Halloowwww,

Ik ben momenteel lerende c#...

[c#]Hoe upload ik de afbeelding uit een picturebox (picturebox1) via FTP (naar mijn server).

Huidige code:

[cpp]
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Net;

namespace ScreenCap
{
public partial class Form2 : Form

{
public Form2()
{
InitializeComponent();
}

private Form m_InstanceRef = null;
public Form InstanceRef
{
get
{

return m_InstanceRef;

}
set
{

m_InstanceRef = value;

}
}

private void Form2_Load(object sender, EventArgs e)
{
pictureBox1.Image = Clipboard.GetImage();
}


private void button1_Click(object sender, EventArgs e)
{
Image image = pictureBox1.Image;

FtpWebRequest client = (FtpWebRequest)FtpWebRequest.CreateDefault(new Uri("ftp://SERVERADRES/afbeelding.png"));
client.Credentials = new NetworkCredential("GEBRUIKERSNAAM", "WACHTWOORD");
client.Method = WebRequestMethods.Ftp.UploadFile;

MemoryStream ms = new MemoryStream();
image.Save(ms, System.drawing.ImageFormat.Png);
byte[] data = ms.ToArray();
ms.Close();

Stream requestStream = client.GetRequestStream();
requestStream.Write(data, 0, data.Count());
requestStream.Close();
}
}
}
[/cpp]

Hope someone can help me :o
Greetzzzz,,
 
Laatst bewerkt:
Dat kan bijvoorbeeld op de onderstaande manier:

[cpp]
Image image = pictureBox1.Image;

FtpWebRequest client = (FtpWebRequest) FtpWebRequest.CreateDefault(new Uri("ftp://adres/afbeelding.png"));
client.Credentials = new NetworkCredential("Peter", "12345");
client.Method = WebRequestMethods.Ftp.UploadFile;

MemoryStream ms = new MemoryStream();
image.Save(ms, ImageFormat.Png);
byte[] data = ms.ToArray();
ms.Close();

Stream requestStream = client.GetRequestStream();
requestStream.Write(data, 0, data.Count());
requestStream.Close();
[/cpp]

(exceptions afhandelen etc mag je zelf doen :P)
 
Dat kan bijvoorbeeld op de onderstaande manier:

[cpp]
Image image = pictureBox1.Image;

FtpWebRequest client = (FtpWebRequest) FtpWebRequest.CreateDefault(new Uri("ftp://adres/afbeelding.png"));
client.Credentials = new NetworkCredential("Peter", "12345");
client.Method = WebRequestMethods.Ftp.UploadFile;

MemoryStream ms = new MemoryStream();
image.Save(ms, ImageFormat.Png);
byte[] data = ms.ToArray();
ms.Close();

Stream requestStream = client.GetRequestStream();
requestStream.Write(data, 0, data.Count());
requestStream.Close();
[/cpp]

(exceptions afhandelen etc mag je zelf doen :P)

Bedankt! Ik ga er straks even naar kojken.
Exceptions zijn niet nodig toch?
 
Dat hangt er een beetje vanaf hoe je het bekijkt en ook van de kwaliteitsnorm die je voor de software hanteert. Strict genomen is het namelijk inderdaad geen noodzaak ze te implementeren, maar de exception die geworpen wordt op het moment dat er toch iets mis gaat in je applicatie (bijvoorbeeld wanneer de server offline is of de accountgegevens niet kloppen) daar weet je applicatie dan dus ook geen raad mee en in de meeste gevallen zal je applicatie in zo'n geval ook gewoon crashen.

Bij een applicatie die alleen voor eigen gebruik is heeft dat verder dan ook weinig gevolgen (alleen vraag ik me gezien het feit dat het slects een paar regels extra code zijn af waarom je ze achterwegen zou laten), maar wanneer er een opdrachtgever en/of eventuele gebruikers in het spel zijn dan wil je zoiets dus echt niet hebben. Als zo'n crash vaak voorkomt verliezen ze het vertrouwen in de software of jou als ontwikkelaar.

(pff, ik heb echt een zwaar weekend gehad en het bovenstaande schrijven kostte echt moeite; dus het kan best zijn dat het allemaal nergens opslaat; Maar daar kom ik morgen wel achter :P)
 
Lijn 8: image.Save(ms, ImageFormat.Png);
ImageFormat wordt onderstreept... (is incorrect)
 
Laatst bewerkt:
Deze foutmelding is te verhelpen door een 'Using System.drawing' aan je source file toe te voegen of de namespace volledig te benoemen: System.drawing.ImageFormat
 
Using System.drawing is al in de source aanwezig..
System.drawing.ImageFormat.Png werkt ook niet.
 
Ja, en ik zie ook wel waarom dat niet werkt. Ik heb je namelijk niet de volledige using directive gegeven (echt een domme fout van me, maar zoals ik al zei heb ik een zwaar weekend (= het hele weekend wakker) en daardoor wat minder scherp van geest (en doordat ik resharper gebruik hoef ik die dingen ook niet meer echt exact te onthouden). De volledig using directive is namelijk: System.Drawing.Imaging.ImageFormat (of eventueel Using System.Drawing.Imaging toevoegen bovenaan je source )
 
MAG IK JOUW HEEL HARTELIJK BEDANKEN?!!?
Je hebt me ontzettend verder geholpen met mijn project.
DANKJE!
Veel sterkte met bijkomen van je weekend :p
 
Laatst bewerkt:
Heb nog een vervolgvraag op deze uplaoder....:
Als je dit gedeelte hebt:
[cpp]FtpWebRequest client = (FtpWebRequest)FtpWebRequest.CreateDefault(new Uri("ftp://adres/afbeelding.png"));[/cpp]
Hoe kan ik daar iets als dit van maken
[cpp]FtpWebRequest client = (FtpWebRequest)FtpWebRequest.CreateDefault(new Uri("ftp://adres" & textBox1.text & ".png"));[/cpp]
(de afbeelding naam laten krijgen van de textbox)...
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan