Mitt nuvarande webbhotell stödjer bara ASP.net mediumthrust.
Därför har jag satt upp en egen server på min maskin med ASP.net
för att få MMS-mottagarscriptet från MOSMS att fungera...
Scriptet för att få ner MMS:et fungerar klockrent...
Nu vill jag lägga in värdena jag får med i MMS:et till en databas...
Just nu försöker jag att i ASP.net-dokumentet (på min dator) göra en redirect till webbhotellet för att där lägga till informationen från MMS:et med hjälp av querystring från ASP.net-dokumentet...
Där strular det till sig...
Så fort det är mellanrum i response.redirecten så fungerar det inte...
Så här ser den ut:
Jag vill även göra MMS-namnet ( mimebody.GetFilename() ) till en string.... Hur gör man det? Försökt att deklarera den överst i dokumentet i olika varianter utan framsteg...
Postar hela MMS-mottagarscriptet här:
using System;
using System.Collections;
using System.IO;
using MIME;
public partial class MMSReceive : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
//Mottagning av MMS från MO-SMS
string subject = Request.ServerVariables["HTTP_MOSMS_SUBJECT"];
string phone_number = Request.ServerVariables["HTTP_MOSMS_NUMBER"];
string mmset = "tjena2";
string headers = "Content-Type: " + Request.ServerVariables["CONTENT_TYPE"] + "\n";
headers += "Content-Length: " + Request.ServerVariables["CONTENT_LENGTH"] + "\n";
StreamReader stream = new StreamReader(Request.InputStream, System.Text.Encoding.Default);
string mimedata = stream.ReadToEnd();
try
{
MimeMessage mms = new MimeMessage();
mms.LoadBody(headers + "\r\n\r\n" + mimedata);
ArrayList mmsparts = new ArrayList();
mms.GetBodyPartList(mmsparts);
for (int i = 0; i < mmsparts.Count; i++)
{
//Spara alla filer i mms mappen.
MimeBody mimebody = (MimeBody)mmsparts[i];
if (mimebody.GetFilename() != null)
mimebody.WriteToFile(Server.MapPath("mms") + "\\" + [B]mimebody.GetFilename());[/B]
}
Response.Redirect("http://www.test.se/mms.asp?nr="+ phone_number +"&sms="+ subject +"&mms="+ mmset +"");
}
catch (Exception err)
{
//Logga felmeddelandet err.StackTrace();
Response.Write("Något blev fel, försök igen");
}
}
}
Varför? Om du inte använder filnamnet någon annanstans så är det väl bara onödigt att lägga det i en variabel?
fakenick! skrev:
Ifall jag lägger:
string filename = mimebody.GetFilename();
där man deklarerar alla andra "strings" så får jag detta meddelande:
"The name 'mimebody' does not exist in the current context"
Ja, du kan inte använda mimebody förrän mimebody finns, vilket är en bra bit ner.
fakenick! skrev:
...Och ifall jag den i ifsatsen där den sparar ner filen så får jag detta:
"Embedded statement cannot be a declaration or labeled statement"
Du måste använda måsvingar {} om if-satsen spänner över flera rader.
fakenick! skrev:
Men nu funderar jag på att spara ut filen med "datum + tid + filändelse" istället... Hur skulle man kunna göra det i ASP.net?
Ungefär som du redan gjort, men använd strängformatering eller de olika delbitarna (Year, Month etc.) som finns på DateTime-klassen för att skapa filnamnet. Ett datum använt som det är riskerar att innehålla tecken som inte får finnas i filnamn.
Vad jag försöker göra är att skicka med filnamnet i querystringen så att filnamnet sparas i en databas.
Men nunu vill jag ha filnamnet så här:
080305202520.jpg (datumet då filen skapas + filändelse)
Hur skall jag göra?
I vanliga asp så skulle jag göra så här:
newdate = replace(now(),"-","")
etc för att få bort sträck, mellanrum och kolon..
sedan skulle jag splita "mimebody.GetFilename()" vid punkten... Och sedan skriva ut filändelsen efter datumet så här:
newdate = ""& newdate &""& filend &""
Hur gör man? Och vart skall man implementera den koden i den kod jag har. Blir smått snurrig av vad man får och inte får göra i ASP.NET då jag bara tidigare använt ASP.
Vad jag försöker göra är att skicka med filnamnet i querystringen så att filnamnet sparas i en databas.
OK. Visst kan du lagra det i en variabel (filename=mimebody.GetFilename()) och sedan UrlEncoda den, eller köra direkt med Server.UrlEncode(mimebody.GetFilename())
fakenick! skrev:
Men nunu vill jag ha filnamnet så här:
080305202520.jpg (datumet då filen skapas + filändelse)
Hur skall jag göra?
I vanliga asp så skulle jag göra så här:
newdate = replace(now(),"-","")
etc för att få bort sträck, mellanrum och kolon..
Så kan du göra i C# också (men med DateTime.Now.ToString()), men för att försäkra sig om att formatet blir rätt (oavsett datumformatsinställningar), så bör du använda
DateTime.Now.ToString("yyMMddHHmmss")
i stället. Det löser hela biffen.
fakenick! skrev:
sedan skulle jag splita "mimebody.GetFilename()" vid punkten...
Helt OK, men .NET ger dig den smidiga funktionen Path.GetExtension(mimebody.GetFilename()) som du kan använda (ligger i System.IO)
fakenick! skrev:
Och sedan skriva ut filändelsen efter datumet så här: