webForumDet fria alternativet
Logga in / Bli medlem

asp -> php: spara fil till disk

PHP

8 svar · 816 visningar · startad av doggelito

Medlem sedan juni 20003 076 inlägg
Trådstart#1

nån som är sugen på lite översättning så här sista arbetsdagen i veckan! :)
koden tar emot en fil som binär data och spar filen till disk, finns redan filen så spars den över.

Dim fs
Set fs = Server.CreateObject("ADODB.Stream")
With fs
	.Type = 1
	.Open()
	.Write Request.BinaryRead(Request.TotalBytes)
	.SaveToFile Server.MapPath(Request.QueryString("filename")), 2
	.Close()
End With
Set fs = Nothing
Medlem sedan juni 20034 013 inlägg
#2

Var kommer filen ifrån? Ett formulär? I så fall antar vi att file-inputen heter fil:

move_uploaded_file($_FILES['fil']['tmp_name'], $_GET['filename']);

Medlem sedan juni 20003 076 inlägg
#3

Filen postas ifrån en windows app. så den kommer inte ifrån ett file-fält.
Applikationen postar filen som en byte array till asp/php-sidan.

Medlem sedan juni 20034 013 inlägg
#4

Aha, i så fall...

$fp = fopen($_GET['filename'], "w");
if ($fp)
fwrite($fp, file_get_contents("php://input"));
fclose($fp);

Medlem sedan juni 20003 076 inlägg
#5

Inte för att jag fattar nått av koden men det ser bra ut! :bire
Fundering bara:
Jag antar att fwrite skriver filen till disk, behöver man inte köra med motsvarigheten till server.mappath när man sparar den, eller innehåller koden redan det?

Medlem sedan juni 20034 013 inlägg
#6

Det behöver du bara om filename-variabeln innehåller katalog också, som inte är relativ till den katalog du är i, men jag tolkade namnet filename som att den bara innehåller filnamnet.

Men i så fall heter det realpath i php:

if ($fp = fopen(realpath($_GET['filename']), "w"))
fwrite($fp, file_get_contents("php://input"));
fclose($fp);

Medlem sedan juni 20003 076 inlägg
#7

lite otydligt variabelnamn kanske! :)
men filename innehåller även sökvägen, ex. "/mapp/filen.gif"

jag återkommer efter jag testat koden! :)

Medlem sedan juni 20003 076 inlägg
#8

tillbaka igen! koden funkade tyvärr inte. :(
och eftersom windows appen postar filen så ser jag inte något felmeddelande!
kan man inkludera nån kodsnutt i php-koden som genererar nån sorts logg?
koden ser ut som ovan, jag har ej ändrat den:

<?php
     if ($fp = fopen(realpath($_GET['filename']), "w"))
     fwrite($fp, file_get_contents("php://input"));
     fclose($fp);
?>
Medlem sedan juni 20003 076 inlägg
#9

hej igen!
jag har fortfarande problem med denna :(
om jag väljer att spara filen direkt i roten funkar koden men väljer jag en undermapp då ballar det ur.

	//if ($fp = fopen(realpath($_GET['filename']), "w")) 
	if ($fp = fopen($_GET['filename'], "w"))
	{
		fwrite($fp, file_get_contents("php://input"));
		fclose($fp);
	}

anger jag att filename ser ut så här: "filen.xml" så funkar det men om filename ser ut ex. så här: "/undermapp/filen.xml" så funkar det inte
hur borde fopen se ut för en sån sökväg?

399 ms totalt · 4 externa anrop · v20260731065814-full.51f67c91
125 ms — deklarationer (db)
131 ms — hämta statistik (db)
139 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)