Hej Nu ska vi se... :) Förstår inte riktigt hur jag ska göra tror det borde fungera: Det jag vill är ju att skicka in filen i ett binärt tillstånd till en klass som sen sparar ner den. Om du vill så kan du ju bara använda .SaveAs och skicka in alltihopa. Eller som du sa: skicka in hela streamen. Att skicka in hela är antagligen det snabbaste å bästa iaf. typ så här Ta en titt på denna site: Ok Hej Gessle!Omöjligt att göra? Upload
Jag har ett problem. Jag behöver ha en upload funktion på min asp sida.
Går det att ladda upp filen som sen sparas i en variabel och sen sparas på servern.
Det jag vill göra är att kunna ladda upp en fil, som då blir en variabel och som jag kan skicka in i mitt class library och där spara ner denna variabel på servern så det blir en fil igen
Fråga om ni inte förstår hur jag menar, så ska jag försöka förklara bättre.
Jag använder mig av c-sharp.Sv: Omöjligt att göra? Upload
1) sätt enctype (tror den hette så) till vad-det-nu-är-för-uploads på formuläret.
2) stoppa in en upload-kontroll (<input type="file" id="blablabla" runat="server" />)
3) i koden använder du blablabla.PostedFile.titta-i-dokumentationen-efter-vad-du-vill-ha-här
på den sista raden kan du:
.SaveAs("filnamn")
.ContentLength
.ContentType
.FileName
.InputStream
Kolla i dokumentationen för mer infoSv: Omöjligt att göra? Upload
Stream stream = File1.PostedFile.InputStream;
int len = File1.PostedFile.ContentLength;
byte[] bytes = new byte[len];
stream.Read(bytes,0,len);
Om jag gör så här så verkar det som om jag har filen sparad som en binär fil.
Hur ska jag nu göra, vill skicka in denna i mitt class library, där jag ska ha en funktion som sparar den ner på hårddisken.
Hur ska jag göraSv: Omöjligt att göra? Upload
<code>
Stream stream = File1.PostedFile.InputStream;
int len = File1.PostedFile.ContentLength;
byte[len] bytes;
stream.Read(bytes,0,len);
</code>
En fråga: Får du något felmeddelande eller något?Sv: Omöjligt att göra? Upload
Vad är det jag ska skicka in i classen då?
en stream? eller vad?
Om jag lägger detta utanför klassen ska jag sen skicka in stream då till klassen
<code>
Stream stream = File1.PostedFile.InputStream;
int len = File1.PostedFile.ContentLength;
byte[len] bytes;
stream.Read(bytes,0,len);
</code>
och hur ska jag sen göra i klassen för att spara den till hårddisken?
jag har inte riktigt greppat dettaSv: Omöjligt att göra? Upload
Sv: Omöjligt att göra? Upload
<code>
public void testmetod(Stream stream)
{
//hur gör jag här nu för att spara den så att det blir en fil igen
}
</code>Sv: Omöjligt att göra? Upload
http://www.dotnetjunkies.com/quickstart/aspplus/default.aspx?url=/quickstart/aspplus/samples/webforms/ctrlref/htmlctrl/HtmlInputFile/doc_inputfile.aspx
Där ser du hur du kan på ett jätte enkelt och smidigt sätt spara ner en fil på disk.
/Fredrik Normén NSQUARED2Sv: Omöjligt att göra? Upload
Jag behöver kunna spara ner filen i en variabel som jag sen skickar in i en klass och i den klassen ska jag spara ner den till disk.
1.Hur ska jag spara ner den så det blir en binär kopia.
2.Hur ska jag sen efter att jag skickat in den binära kopian till min klass, kunna spara ner den till disk.Sv: Omöjligt att göra? Upload
Jag har gjort ett litet exempel som (om jag förstått din fråga rätt) gör det du frågar efter.
Jag läser in datat från en input type=file:
<code>
'Läs in filen i myBytes
Dim myStream As System.IO.Stream
Dim myLen As Integer
myStream = myFile.PostedFile.InputStream
myLen = myFile.PostedFile.ContentLength
Dim myBytes(myLen) As Byte
myStream.Read(myBytes, 0, myLen)
'Kolla filnamnet och spara i myFilename
Dim myFileName As String
myFileName = myFile.PostedFile.FileName
myFileName = Mid(myFileName, InStrRev(myFileName, "\") + 1)
'Skicka till en klasss
Dim myClass1 As Class1
myClass1 = New Class1
myClass1.useStream(myBytes, myFileName)
</code>
Och sparar filen i klassen:
<code>
Imports System.IO
Public Class Class1
Public Sub useStream(ByVal streamBytes() As Byte, ByVal strFilename As String)
' Skapa filen. Om filen redan finns; radera den.
Dim fs As New FileStream("C:\Inetpub\wwwroot\PostFile2Class\uploads\" & strFilename, FileMode.Create)
Dim w As New BinaryWriter(fs)
Dim i As Integer
For i = 0 To UBound(streamBytes)
w.Write(streamBytes(i))
Next i
w.Close()
fs.Close()
End Sub
End Class</code>
Hoppas att detta löser ditt problem.
Vänliga hälsningar / Johan @ Microsoft