바이너리 파일 (비디오 또는 이미지 파일 일 수 있음)을 쓰는 PHP 프로그램을 작성하고 있습니다. 나는바이너리 모드 쓰기
<?php
$fileChunk = $_POST["filechunk"];
$vodFolder = 'D:\\HYSA SVN\\Trunk\\workproducts\\source\\hysa_he\\web\\entertainment\\';
$vodFile = $vodFolder . "abcd.mov";
$fh = fopen($vodFile, 'ab');
flock ($fh, LOCK_EX);
$varsize = fwrite($fh, $fileChunk);
fclose($fh);
?>
를 웹 서비스로 만들어
내 코드는 아래에 제공되는 등의 C# 등의 다른 응용 프로그램, 맥에서 전화를 좋아하지만 것이다 나는 교류 #에서 PHP 웹 서비스를 호출 할 때 코드에서 abcd.mov가 위치에 생성되지만 크기는 단지 1kb입니다. 필자는 바이너리 파일에 문자 '&'이 발견되면 쓰기가 중단되었다고 생각합니다. 나는 PHP 문서를 읽고 그것을 발견, 바이너리 모드 'b'와 함께이 문제를 해결할 것입니다 fopen? 하지만 작동하지 않습니다. 누군가 나를 도울 수 있습니까?
이것은 내 C# 코드입니다.
BinaryReader b = new BinaryReader(File.Open("d:\\image38kb.jpg", FileMode.Open));
int pos = 0;
int length = (int)b.BaseStream.Length;
byte[] bt = b.ReadBytes(length);
char[] ch = b.ReadChars(length);
HttpWebRequest request = null;
Uri uri = new Uri("http://d0327/streamtest.php");
request = (HttpWebRequest)WebRequest.Create(uri);
NetworkCredential obj = new NetworkCredential("shihab.kb",
"India456*", "tvm");
request.Proxy.Credentials = obj;
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = bt.Length;
using (Stream writeStream = request.GetRequestStream())
{
UTF8Encoding encoding = new UTF8Encoding();
byte[] bytes = encoding.GetBytes("filechunk=");
byte[] rv = new byte[bytes.Length + bt.Length];
System.Buffer.BlockCopy(bytes, 0, rv, 0, bytes.Length);
System.Buffer.BlockCopy(bt, 0, rv, bytes.Length, bt.Length);
writeStream.Write(rv, 0, bt.Length);
}
string result = string.Empty;
using (
HttpWebResponse response = (HttpWebResponse)request.GetResponse())
{
using (Stream responseStream = response.GetResponseStream())
{
using (StreamReader readStream = new StreamReader(responseStream, Encoding.UTF8))
{
result = readStream.ReadToEnd();
}
}
}
답장을 보내 주셔서 감사합니다. '\ x26'을 사용하여 앰퍼샌드를 벗어나는 방법을 알려주고 '\ x5C'로 모든 역 슬래시()를 이스케이프 처리 할 수 있습니까? – user867662