저는 PHPExcel로 몇 가지 Excel 파일을 만들고 스크립트를 실행하는 서버에 저장합니다. 이 부분은 잘 작동합니다.FTP가 특정 지연 및/또는 크기를 가진 파일을 손상시킵니다.
그런 다음 ftp_put을 사용하여 클라이언트의 ftp 서버로 보내려고하지만 파일이 서버에 도착합니다.
Filezilla를 사용하여 FTP 서버에서 파일을 다시 다운로드 한 후 열면 파일 내용에 문제가 있다는 메시지가 표시되며 원하는 경우 최대한 많이 복구하려고 시도 할 수 있습니다. 그래서. 그렇게하는 것은 도움이되지 않습니다.
Excel 파일이 100-120k 미만인 경우 손상되지 않은 상태로 전송되며 손상된 것보다 큽니다.
스크립트는
$conn_id = ftp_connect($hostFTP);
if($login_result = ftp_login($conn_id, $userFTP, $passwordFTP))
{
ftp_pasv($conn_id, true);
if(ftp_put($conn_id, $remote_path.$output_filename, $localPath.$output_filename, FTP_BINARY))
{
$log = new Logs("listes.log", "Uploaded $output_filename");
}
else
{
$log = new Logs("listes.log", "FAIL Uploading $output_filename");
}
ftp_close($conn_id);
}
내가 뭔가 잘못하고 있습니까 FTP를 통해 보내? 내가 무엇을 할 수 있을지?
편집 :
내가이미지 (JPG)을 시도 100-120k 마크 주위에 생각하는 라인 (231)에서 시작하여 몇 가지 차이점을 보여 텍스트 파일을 비교
하고 또한 손상되면 (이미지의 윗부분은 괜찮지 만 한 점에서는 부패하고 이미지의 나머지 부분은 거의 단색으로되어 있습니다.) 그래서 문제는 탁월하지 않습니다.
서버 (opensuse)가 ftp를 제한 할 수 있습니까? 만약 그렇다면 어떻게?
120k 이상의 파일 중 하나를 수동으로 FTP 서버에 업로드하면 어떻게됩니까? 대신'FTP_ASCII'을 시도해 보셨습니까? 수동으로 파일을 업로드 할 때 ASCII 및 BINARY 모드를 사용하여 수동으로 시도하십시오. – MonkeyZeus
filezilla를 사용하여 수동으로 업로드하는 경우 대답은 파일이 손상되지 않았 음을 의미합니다. 스크립트를 통해 수동으로 의미하는 경우 아스키 또는 바이너리로 손상됩니다. –
예, 내 질문에 완전히 대답했습니다. 'ftp_put();'을 사용하여 Excel에서 생성 된 엑셀 파일을 업로드 할 수 있습니까? 또는 120k보다 큰 txt 파일을'ftp_put'을 통해 보내려고 시도 할 수도 있습니다. 그리고 FTP 서버에서 파일을 다시 다운로드 할 때 텍스트의 오류가 나타날 수 있습니다. – MonkeyZeus