Можно создать дубликат:
Headers already sent by PHPPHP «Не удается изменить информацию в заголовке - заголовки уже прислал»
Я пытаюсь загрузить двоичный файл из приложения Java и обрабатывать его через PHP скрипт на стороне сервера.
Но он показывает следующий журнал, когда я запускаю код в Eclipse (для Java).
Хотя я отправляю информацию заголовка в первой строке, почему он отображает это сообщение.
Вот мой PHP код:
<?php
header('Content-type: application/xml');
/*******************************************/
$DIRECTORY_SEPARATOR = "/";
$BUF_SIZE = 4096;
/*******************************************/
uploadFile();
sendResponse();
/*******************************************/
function uploadFile()
{
global $DIRECTORY_SEPARATOR;
global $BUF_SIZE;
$targetDir = "." . $DIRECTORY_SEPARATOR . "uploaded_file";
/***************************************/
// 5 minutes execution time
@set_time_limit(5 * 60);
/***************************************/
// Set filename
$filename="temp_aa.mp3";
/***************************************/
if (!file_exists($targetDir))
{
mkdir($targetDir,0777,true);
}
/***************************************/
$out = fopen($targetDir . DIRECTORY_SEPARATOR . $fileName, $chunk == 0 ? "wb" : "ab");
if ($out)
{
$in = fopen("php://input", "rb");
if ($in)
{
while ($buff = fread($in, $BUF_SIZE))
{
fwrite($out, $buff);
}
fclose($in);
}
else
{
fclose($out);
return ;
}
}
else
{
return ;
}
}
function sendResponse()
{
echo "
<?xml version=\"1.0\" encoding=\"UTF-8\"?>
<data>
<status type=\"file_upload\">
<value>ok</value>
</status>
</data>
";
}
>
И вот мой код Java-сторона:
import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
public class TestHttp
{
public static void main(String[] args)
{
HttpURLConnection httpUrlConnection = null;
File mFileToUpload = new File("c:/aa.mp3");
int byteTrasferred = 0, mBufferSize = 4096, mTempBytesRead = 0;
byte[] mBuffer = new byte[mBufferSize];
try
{
httpUrlConnection = (HttpURLConnection)new URL("http://127.0.0.1/testhttpfileupload3.php").openConnection();
httpUrlConnection.setDoOutput(true);
httpUrlConnection.setRequestMethod("POST");
OutputStream os = httpUrlConnection.getOutputStream();
Thread.sleep(1000);
BufferedInputStream fis = new BufferedInputStream(new FileInputStream(mFileToUpload));
while((mTempBytesRead = fis.read(mBuffer)) != -1)
{
os.write(mBuffer, 0, mTempBytesRead);
byteTrasferred += mTempBytesRead;
System.out.println("byteTrasferred = " + byteTrasferred);
}
fis.close();
os.close();
}
catch(Exception e)
{
e.printStackTrace();
}
try
{
BufferedReader in = new BufferedReader(new InputStreamReader(httpUrlConnection.getInputStream()));
String s = null;
while ((s = in.readLine()) != null)
{
System.out.println(s);
}
in.close();
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
А вот журнал ошибок:
байт Передано = 8802304
байт Переведен = 8804659
Предупреждение: неизвестно: POST Content-Length из 8804659 байт превышает предел 8388608 байт в Unknown на линии
Предупреждение: Не удается изменить информацию в заголовке - заголовки уже отправлены в Unknown на линии
Предупреждение: Cann ВЗ изменить информацию в заголовке - заголовки уже отправлены в C: \ WAMP \ WWW \ testhttpfileupload3.php на линии
Примечание: Undefined переменной: имя_файла в C: \ WAMP \ WWW \ testhttpfileupload3.php на линии
Примечание: Undefined переменной: кусок в C: \ WAMP \ WWW \ testhttpfileupload3.php на линии
Предупреждение: Еореп (./ uploaded_file) [function.fopen]: не удалось не удалось открыть поток: Нет такого файла или каталога в C: \ WAMP \ WWW \ testhttpfileupload3.php на линии
<?xml version="1.0" encoding="UTF-8"?>
<data>
<status type="file_upload">
<value>ok</value>
</status>
</data>
thnx sooo much ... я думаю, что вы правы .... предупреждающее сообщение отправляется в качестве начальных заголовков ... –
ошибки запуска являются необычными, но когда они происходят, они происходят до того, как какой-либо из ваших кодов выполняется, что и происходит здесь. рад помочь. – drew010