if ($_FILES["ufile"]["type"] [$i] == "image/jpeg" || $_FILES["ufile"]["type"] [$i] == "image/jpg" || $_FILES["ufile"]["type"] [$i] == "image/png" || $_FILES["ufile"]["type"] [$i] == "image/gif")
{
if ($_FILES["ufile"]["type"] [$i] == "image/png" || $_FILES["ufile"]["type"] [$i] == "image/gif" || $_FILES["ufile"]["type"] [$i] == "image/jpeg" || $_FILES["ufile"]["type"] [$i] == "image/jpg")
{
$file=$_FILES["ufile"]["tmp_name"];
list($width, $height) = getimagesize($file);
$new_width = 200;
$new_height = 500;
$dst_image = imagecreatetruecolor($new_width,$new_height);
$src_image = imagecreatefromjpeg($_FILES["ufile"]["tmp_name"]);
imagecopyresized ($dst_image, $src_image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
imagejpeg(imagecreatefromstring(file_get_contents($dst_image)), "convert.jpg");
$actual_image_name = $name[$i].'.'.'jpg';
move_uploaded_file("convert.jpg", $path.$actual_image_name);
}
}
답변
GD를 완전히 잘못 사용하고 있습니다. $dst_image
은 GD 이미지 핸들입니다. 이 아니고 파일입니다. 그래서 ... file_get_contents()
은 이 아닌 파일 이름을 가져 오려고하기 때문에 부울 FALSE를 반환합니다. imagecreatefromstring()
은 boolean false가 이 아니고 이미지 문자열이이고 imagejpeg()
이 GD 핸들을 전달하지 않으므로 부울 FALSE를 반환하므로 부울 false를 반환합니다.
간단히 말해서 코드가 개선 될 수 있습니다. 아무 것도 잘못 될 수 있다고 가정하고, 실패를 확인하지 않으며, 실패는 코드를 통해 앞으로 전달됩니다. 모든 당신이 정말로 필요
는image_jpeg($dst_image, 'convert.jpg');
한 후 move_uploaded_file
도는 "convert.jpg"때문에 실패하여 업로드 된 파일이 아닙니다. 서버에서 직접 만든 파일입니다. 업로드 된 파일을 기반으로했을 수도 있지만 이 아니며 업로드 된 파일이이 아닙니다. 그냥
작동하지 않음 손실 됨 –
이 답변의 해설은 약간 날카로웠다. 그래서 나는 조금 더 부드럽게 만들었고 희망적으로 같은 의미를 전달했다. OP는 오래 가지 않을 것이지만, 초보 개발자일지도 모르는 장래 독자들에게 친절한 가치가 있다고 생각합니다! – halfer
- 1. 지원 - 화면과 이미지는 여전히 동일합니다.
- 2. Qt 벡터 크기는 동일합니다.
- 3. 이미지는 데이터베이스에 업로드되었지만 PHP에서는 페이지에 표시되지 않습니까?
- 4. VHDL 계산은 다르지만 여전히 동일합니다.
- 5. getencoded 이후 키가 여전히 비밀번호와 동일합니다
- 6. EM의 CSS 요소 크기는 여전히 현대적입니까?
- 7. FCKeditor가 업로드되었지만 폴더에 표시되지 않습니까?
- 8. httpd.conf에서 DocumentRoot가 변경되었습니다. $ _SERVER [ 'DOCUMENT_ROOT']은 여전히 동일합니다.
- 9. 아래 이미지는
- 10. 이미지가 서버에 업로드되었지만 표에 필드가 생성되지 않았습니다.
- 11. SQLite 파일 크기는 여전히 드롭 테이블 변경 후 변경되지 않습니다
- 12. 이미지는 ...
- 13. 크기는
- 14. 크기는
- 15. 크기는
- 16. ftp_put은 파일이 성공적으로 업로드되었지만 파일이 없습니다.
- 17. 파일이 업로드되었지만 데이터가 데이터베이스에 입력되지 않습니다.
- 18. 이미지가 Facebook에 업로드되었지만 페이지에 표시되지 않았습니다.
- 19. ajax를 통해 업로드되었지만 $ _FILES PHP가 null을 반환했습니다.
- 20. 앱 스토어에 업로드되었지만 활동 메뉴에 표시되지 않았습니다.
- 21. HandlerManager는 소스와 어떻게 작동합니까?
- 22. 어디 스프링 소스와 저장소입니다
- 23. 하나 이상의 소스와 numpy.searchsorted
- 24. bash는 소스와 별칭 문제
- 25. Eclipse에서 소스와 빌드를 분리하십시오.
- 26. freemium은 오픈 소스와 호환됩니까?
- 27. 소스와 입력란의 차이
- 28. PosthreadMessage와 동일합니다.
- 29. OpenElec XMBC 이미지는 SD 카드를 128MB로 줄입니다.
- 30. 크기는 레일
어디서나 코드에 숨겨져있는 질문입니까? 나는 그것을 검색해야합니까? – Rizier123
** 검증을 위해'[ 'type']'필드를 사용하지 마십시오. 그것은 잊기가 쉽다. getimagesize()를 사용하고 있으므로'[ 'mime']'매개 변수를 사용하여 파일이 실제로 무엇인지 확인하십시오. –
먼저 파일을 업로드 한 다음 치수를 변경하십시오. – Nick