일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- web3D
- Environment Reflections
- untiy
- 역직렬화 오류
- 에셋번들
- RenderStreaming
- Depth camera
- WebGL
- apk
- TextMeshPro
- TextMeshPro 한글
- webview
- Unity VisualStudio
- 커스텀쉐이더
- Unity
- kinect v2
- unityhub
- DS4
- android app bundle
- muilt controller
- 반응형레이아웃
- AR
- 유니티
- AssetBundle
- Android
- Specular Highlights
- Rewired
- 구글플레이스토어
- 랜더스트리밍
- 듀얼쇼크4
- Today
- Total
기억저장고
[Unity] WWWForm Post로 서버에 이미지 파일 업로드 본문
준비물
서버, 유니티
*서버가 생기기 전에 테스트하고 싶을때는 자신의 PC로 테스트해보자
- Post로 이미지를 보내려면 서버에 받을 php가 필요함 (웹 잘몰름..)
그리고 php를 실행하려면 아파치 웹 서버와 php 를 다운받아야함
아래 블로그를 따라해서 웹서버, php 설치하기
[요약]
1. 아파치 설치
[아파치 설치 설명 잘 되어있다]
https://com24everyday.tistory.com/257
Windows10에 Apache 서버 구축 (오류 및 해결 방안 정리)
서버를 직접 구축해보았습니다. https://www.sitepoint.com/how-to-install-apache-on-windows/ How to Install Apache Web Server on Windows - SitePoint A step-by-step guide to manually installing the Apache Web Server on Windows, with links to furth
com24everyday.tistory.com
- 다운페이지: https://www.apachelounge.com/download/
Apache VS17 binaries and modules download
www.apachelounge.com
Win64 설치 시 zip파일 다운로드됨
그리고 압축 풀고 C드라이브에 아파치폴더 넣기
2. C:\Apache24\conf 들어가서 httpd.conf 파일 수정 (# --> 주석이란뜻..)
2-1. Listen 8080
2-2. 주석해제
2-3.
2-4. DocumentRoot는 http://localhost 실행 할때 root폴더이므로, 작업할 폴더로 설정함
3.
--httpd.conf 수정하다가 잘하고있는지 확인하고싶으면 유효성검사 하면됨
httpd -t
-모두 잘 했으면 C:\Apache24\bin에서 아파치 모니터 클릭 후, Start
(윈도우시스템트레이에 있을수도 있음)
- php 설치
Thread Safe 버전으로 설치하기
https://windows.php.net/download/
PHP For Windows: Binaries and sources Releases
PHP 8.0 (8.0.26) Download source code [23.47MB] Download tests package (phpt) [13.55MB] VS16 x64 Non Thread Safe (2022-Nov-22 19:03:36) Zip [25.52MB] sha256: f83c10ab7330b2cc6922b4eb1e937637cb2f1b22cc8e413702636211f83458d3 Debug Pack [23.21MB] sha256: a085
windows.php.net
[php 설치+아파치 연결 설명 잘되어있음]
윈도우10 Window10 환경에서 Apache, PHP 설치하기
다른 블로그 보고 따라하다가 경로, 윈도우 비트 달라서 개뻘짓해서 빡쳐서 쓴는 글 내 컴퓨터가 win 64비트인지 확인해야함 이건 철저히 win 64비트를 위한 글임 1. 먼저 아파치 설치 https://www.apache
fifo22.tistory.com
https://programming-workspace.tistory.com/19
[Web Server] 윈도우에서 아파치 웹서버와 PHP 8.0 연동하기
아파치 웹서버와 PHP8.0 버전의 연동 방법에 대해서 알아보겠습니다. 블로그는 아래의 글들을 참고하여 작성하였습니다 :) 더보기 jimnong.tistory.com/613 gracefullight.dev/2017/01/13/%EB%A1%9C%EC%BB%AC-%EC%9B%B9%EC%
programming-workspace.tistory.com
* 다른점:
- PHP8로 했기때문에 php8로 폴더명 제작
- php설치 맨 마지막에 httpd.conf 파일 수정 하는부분 이렇게 해야한다.
(LoadModule php7_module --> LoadModule php_module 이걸로 사용방법 바뀜)
PHPIniDir "C:/php8"
LoadModule php_module "C:/php8/php8apache2_4.dll"
AddType application/x-httpd-php .html .php
AddHandler application/x-httpd-php .php
+ localhost:8080으로 접속할때 아래와 같이 안뜨고 폴더처럼 나오면 DocumentRoot폴더에 index.html이 없어서 그렇다
C:\Apache24\htdocs에 있는 html 파일 복사해서 DocumentRoot에 옮겨놓으면 아래와 같이 나올것이다.
-설치가 모두 되면
C:\Apache24/conf/httpd.conf 파일에서 IfModule dir_module부분을 아래와 같이 수정해줘야 php도 읽음
<IfModule dir_module>
DirectoryIndex index.php index.html
</IfModule>
[유니티 세팅]
설치가 잘되고 아파치 서버도 잘 실행되면
1. DocumentRoot폴더(나는 D:\Web )에 uploader폴더 생성
2. uploader에 uploaded_images폴더 생성 --> 업로드된 파일 저장 폴더
3. index.php 생성
<?php
if (isset($_FILES['myimage'])){
$img = $_FILES['myimage']['name'];
$tmpimg = $_FILES['myimage']['tmp_name'];
//To get file extension
//$fileExt = pathinfo($img, PATHINFO_EXTENSION) ;
move_uploaded_file($tmpimg, "./uploaded_images/$img");
echo "[success] image ($img) uploaded successfully.";
exit();
}
else{
echo "[error] there is no data with name [myimage]";
}
?>
---
유니티 코드
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Networking;
public class SendImage : MonoBehaviour
{
private IEnumerator Start()
{
yield return SendData();
}
private IEnumerator SendData()
{
string path = "C:\\Users\\Chaelin\\Desktop\\큐티\\오라, 달콤한 달콤한 치와와여.jpg";
byte[] byteTexture = System.IO.File.ReadAllBytes(path);
WWWForm form = new WWWForm();
form.AddBinaryData("myimage", byteTexture,"ImageFromUnity.png","image/jpg");//myimage: php와 맞춤
using (UnityWebRequest www = UnityWebRequest.Post("http://localhost:8080/uploader/", form))
{
//www.SetRequestHeader("Content-Type", "image/png");
yield return www.SendWebRequest();
if (www.result != UnityWebRequest.Result.Success)
{
Debug.Log("error" + www.error);
}
else
{
}
}
yield return null;
}
}
이렇게하면 파일이 업로드됨..