티스토리 툴바



'프로그래밍!!'에 해당되는 글 29건

  1. 2011/12/06 Binary File 읽어서 base64로 인코딩 후 php로 보내기
  2. 2011/09/02 WebView에서 url이 로딩될 때 내부처리/외부처리 바꾸기
  3. 2011/08/16 PY2EXE. py에서 실행파일(exe)로 만드는 방법
  4. 2011/08/08 안드로이드에서 웹으로 데이터 넘기기.
  5. 2011/08/08 Putty Portable 6.0
  6. 2011/07/26 안드로이드에서 버전업 했을때 버전 확인하고 다운 받기
  7. 2011/07/26 안드로이드에서 SharedPreferences(임시 저장 공간) 활용하기
  8. 2011/07/26 Android에서 자기 번호 가져오기
  9. 2011/07/25 PHP XML Parsing
  10. 2011/07/20 C#에서 ShellExecuteA 사용하기

Binary File 읽어서 base64로 인코딩 후 php로 보내기

Javascript 에서 파일을 읽어들여야 하는 경우가 생겼습니다.
뭐... html5 에 FileReader라는게 생겼죠..
image를 예제로 해서 이미지를 읽어들이고 예제로 보여주고 나서
바로 업로드가 가능하도록 구현하였습니다.
        
        function readFile() {
            var file = document.getElementById("file").files[0];

            document.getElementById("fileName").textContent = file.name;
            document.getElementById("fileSize").textContent = "(" + file.size + "byte)";

            var reader = new FileReader();

            reader.onload = function() {
                var display = document.getElementById("content");
				var img = document.getElementById("test");
				img.src = "data:image/jpeg;base64,"+encode64(reader.result);
                display.textContent = encode64(reader.result);
				base64_datas = encode64(reader.result);
            };

            reader.onerror = function(evt) {
                alert(evt.target.error.code);
            };

            var encodingList = document.getElementById("encoding");
            var encoding = encodingList.options[encodingList.selectedIndex].value;  
          
            reader.readAsBinaryString(file, encoding);
        };
[소스1.] 파일을 읽어들이는 소스
		function upload() {
			xhr = new XMLHttpRequest();
			xhr.onreadystatechange = handleFileData;
			xhr.open("POST","upload.php",true);
			xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");//요청헤더의 정의 
			//alert(base64_datas);
			xhr.send("img_datas="+base64_datas);
		}

		function handleFileData() { 
			// only if req shows "loaded" 
			if (xhr.readyState == 4) { 
				// only if "OK" 
				if (xhr.status == 200) { 
					console.log(xhr.responseText);
					alert('Upload complete!');
				} else { 
					alert("There was a problem retrieving the XML data:\n" + 
						xhr.statusText); 
				} 
			} 
		}
[소스2.] php로 업로드하는 소스.
파일을 주고 받으려면 base64로 바꿔야겠죠..
var keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
function encode64(input) {
   var output = "";
   var chr1, chr2, chr3;
   var enc1, enc2, enc3, enc4;
   var i = 0;
   do {
      chr1 = input.charCodeAt(i++);
      chr2 = input.charCodeAt(i++);
      chr3 = input.charCodeAt(i++);
      enc1 = chr1 >> 2;
      enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
      enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
      enc4 = chr3 & 63;
      if (isNaN(chr2)) {
         enc3 = enc4 = 64;
      } else if (isNaN(chr3)) {
         enc4 = 64;
      }
      output = output + keyStr.charAt(enc1) + keyStr.charAt(enc2) + 
         keyStr.charAt(enc3) + keyStr.charAt(enc4);
   } while (i < input.length);
   
   return output;
}
function decode64(input) {
   var output = "";
   var chr1, chr2, chr3;
   var enc1, enc2, enc3, enc4;
   var i = 0;
   // remove all characters that are not A-Z, a-z, 0-9, +, /, or =
   input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");
   do {
      enc1 = keyStr.indexOf(input.charAt(i++));
      enc2 = keyStr.indexOf(input.charAt(i++));
      enc3 = keyStr.indexOf(input.charAt(i++));
      enc4 = keyStr.indexOf(input.charAt(i++));
      chr1 = (enc1 << 2) | (enc2 >> 4);
      chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
      chr3 = ((enc3 & 3) << 6) | enc4;
      output = output + String.fromCharCode(chr1);
      if (enc3 != 64) {
         output = output + String.fromCharCode(chr2);
      }
      if (enc4 != 64) {
         output = output + String.fromCharCode(chr3);
      }
   } while (i < input.length);
   return output;
}
function encode64Han(str) {
  return encode64(escape(str))
}
function decode64Han(str) {
  return unescape(decode64(str))
}
이렇게 해서 파일 읽어서 보내면...

PHP에서는..


이렇게 받으시면 되요..
여기서 중요한건.. file_get_contents 인데.. 저렇게 안하고 $_POST['img_datas']로 하시면 데이터가 중간에 손실되요ㅠㅠ
그거때문에 몇시간을 고생해서...ㅠㅠㅠ흑흑..
Comment 0 Trackback 0

Trackback : http://fdin.tistory.com/trackback/45 관련글 쓰기

Top

WebView에서 url이 로딩될 때 내부처리/외부처리 바꾸기

		web.setWebViewClient(new WebViewClient() {

			@Override
			public boolean shouldOverrideUrlLoading(WebView view, String url) {
				// TODO Auto-generated method stub
				// return super.shouldOverrideUrlLoading(view, url);
				view.loadUrl(url);
				return true; // TRUE이면 내부처리, FALSE이면 내장 브라우저에서
			}

		});
		web.loadUrl("주소");
보통 안드로이드 어플에 웹뷰를 넣으면 링크를 눌렀을때 기본이 폰 내장 브라우저에서 처리로 기본이 되어있다.
보통 웹뷰를 쓸때 어플 내부에 웹을 띄우기 위해서인데, 내부 처리하는 경우가 더 많다고 생각한다.
그러므로..  
Comment 0 Trackback 0

Trackback : http://fdin.tistory.com/trackback/44 관련글 쓰기

Top

PY2EXE. py에서 실행파일(exe)로 만드는 방법

Python 2.7 을 설치( http://www.python.org/download/ )하고 그 버전에 맞는 py2exe 를 받자..(전 2.7버전 다운로드 했어ㅛ)
http://sourceforge.net/projects/py2exe/files/py2exe/


설치파일을 만들 test.py 

from distutils.core import setup
import py2exesetup(console=['Target.py'])

test.py 를 이런 내용으로 만들고 Target.py(py -> exe를 할 파일)가 있는곳에 넣는다.
cmd 입력창에서

C:\Python27\python.exe test.py py2exe

이렇게 하면 dist 폴더에 exe 파일이 생성된다!! 
Comment 0 Trackback 2

Trackback : http://fdin.tistory.com/trackback/42 관련글 쓰기

  1. Igre

    Igre | 2012/04/16 10:16 delete

    에프딘의 티스토리 ㅋ ::

  2. herbal incense

    herbal incense | 2012/05/02 17:03 delete

    에프딘의 티스토리 ㅋ ::

Top

안드로이드에서 웹으로 데이터 넘기기.


URL url = new URL(주소);
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
conn.setDefaultUseCaches(false);
conn.setDoInput(true);
conn.setDoOutput(true);
conn.setRequestMethod("POST");// 방식,.. POST,GET,PUT 등..
String s = "키="+밸류+"&키2="+밸류+"&키3="+밸류";
PrintWriter pw = new PrintWriter(new OutputStreamWriter(conn.getOutputStream(), "UTF-8"));
pw.write(s);
pw.flush();
BufferedReader bf = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"));
StringBuilder buff = new StringBuilder();
String line;
while((line = bf.readLine()) != null)
{
	buff.append(line);
}
return buff.toString(); // 결과값 도출
Comment 0 Trackback 0

Trackback : http://fdin.tistory.com/trackback/41 관련글 쓰기

Top

Putty Portable 6.0

역시..
c:\windows\system32 에 놓고.실행으로 키면 편리함 +_+
 

putty.exe


Comment 0 Trackback 0

Trackback : http://fdin.tistory.com/trackback/40 관련글 쓰기

Top

안드로이드에서 버전업 했을때 버전 확인하고 다운 받기

public boolean CertificateVersion()
{
        String s_url = "버전이 있는 주소";
        URL ver_url;
try {
ver_url = new URL(s_url);

   HttpURLConnection http;
try {
http = (HttpURLConnection)ver_url.openConnection();
BufferedReader in = new BufferedReader(new InputStreamReader(http.getInputStream()));
        StringBuffer buffer = new StringBuffer();
       
        int c;
        while((c=in.read()) != -1){
        buffer.append((char)c);  
        }
        String content = buffer.toString();//content 있는 값을 비교한다.
if(content.equals(version) == false)
{
Update(); 
}
       
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (MalformedURLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
return false;
}


public void Update()
{
File updater = new File("/sdcard/프로그램업데이터넣을곳/");

if(!updater.exists()) {
updater.mkdirs();
}
try {
    URLConnection uc = new URL(업데이트 주소).openConnection();
    InputStream in = uc.getInputStream();
   
    int len=0;
    byte[] buf = new byte[1024];
       
     File updateFile=new File(updater + filename);

       // 다운로드
     FileOutputStream fos = new FileOutputStream(updateFile);

       while((len=in.read(buf, 0, 1024)) != -1) {
        total += len;
        fos.write(buf, 0, len);
      }
      in.close();
      fos.flush();
      fos.close();
     } catch (Exception e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
      Log.i("fdin", e.getMessage());
     }
Toast.makeText(Activity.this, "업데이트 파일을 실행해주세요, 위치 : " + updater + filename, Toast.LENGTH_LONG).show();
 
System.exit(0);
Comment 0 Trackback 0

Trackback : http://fdin.tistory.com/trackback/39 관련글 쓰기

Top

안드로이드에서 SharedPreferences(임시 저장 공간) 활용하기

안드로이드에서 조그마한 저장소가 하나 존재한다.
이 저장소를 활용하여 프로그래밍 종료되도 설정에 저장된 내용을 유지시키거나 혹은 프로그램 처음 킬때 인증 과정을 하는 과정등의 여러가지 활용이 가능하다.

SharedPreferences setting;

// SharedPreferences 에 있는 값을 가져오기 위한 과정
setting = getSharedPreferences("PATH", MODE_PRIVATE); 
path = setting.getString("PATH", "/sdcard/"); // PATH 라는 곳에 있는 값을 가져오고 default값은 /sdcard/

// SharedPreferences 에 값을 저장하기
Editor editor = setting.edit();
editor.putString("PATH", edit.getText().toString);
editor.commit();

putString 이외에도 putBoolean 등 다양한 형태를 저장할 수 있다.
Comment 0 Trackback 0

Trackback : http://fdin.tistory.com/trackback/38 관련글 쓰기

Top

Android에서 자기 번호 가져오기

private String GetMyPhoneNumber()
{
TelephonyManager manager = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);
String phoneNum = manager.getLine1Number();
return phoneNum; 


ㅋㅋㅋㅋ안드로이드 개발 재미나네.ㅋ 
Comment 0 Trackback 0

Trackback : http://fdin.tistory.com/trackback/37 관련글 쓰기

Top

PHP XML Parsing

XML 예

<ABC>
<DEF>FFFF</DEF>
</ABC> 
$xmlUrl = "XML 주소";
// XML 주소에서 XML을 가져오는 함수 
$xmlStr = file_get_contents($xmlUrl);
// 간단히 파싱을 하기 위한 PHP 함수 
$xmlObj = simplexml_load_string($xmlStr);
// 내장 파서 짜잔 
$XmlParser = new XmlParser;
// Object -> Array로~ 
$arrXml = $XmlParser->objectsIntoArray($xmlObj);
// FFFF출력
$value = $arrXml['ABC']['DEF'];

 

'프로그래밍!! > PHP' 카테고리의 다른 글

PHP XML Parsing  (0) 2011/07/25
Comment 0 Trackback 0

Trackback : http://fdin.tistory.com/trackback/36 관련글 쓰기

Top

C#에서 ShellExecuteA 사용하기

        [DllImport("Shell32.dll")]
        public static extern int ShellExecuteA(IntPtr hwnd, string lpOperation, string lpFile, string lpParameters, string lpDirecotry, int nShowCmd);

==== 사용법====

출처 : http://msdn2.microsoft.com/en-us/library/ms647732.aspx

 

ShellExecute Function

명세한 파일의 작동을 수행한다.

 

Syntax

HINSTANCE ShellExecute(

    HWND hwnd,

    LPCTSTR lpOperation,

    LPCTSTR lpFile,

    LPCTSTR lpParameters,

    LPCTSTR lpDirectory,

    INT nShowCmd

);

 

Parameters

hwnd

    [in] UI 또는 에러 메시지를 디스플레이 하기 위해 사용되는 소유자 윈도우에 대한 핸들. 작업이 윈도우에 연결되어 있지 않으면

    이 값은 NULL이 될 수 있다.

lpOperation

    [in] 이 경우에 verb로 참조되는 수행되어야 할 동작을 지정하는 null-terminated string에 대한 포인터. 가능한 verbs의 집합은

    특정한 파일 또는 폴더에 의존한다. 일반적으로, 객체의 단축 메뉴로부터 가능한 action이 가능한 verb이다.

lpFile

    [in] 지정한 verb를 수행해야 하는 파일 또는 객체를 명세하는 null-terminated 문자열에 대한 포인터.

lpParameters

    [in] lpFile 파라미터가 실행 파일을 명세하고 있다면 lpParameter는 어플리케이션으로 전달되는 파라미터를 가르키는 null-ter

    minated 문자열에 대한 포인터이다.

lpDirectory

    [in] 기본 디렉토리를 명세하는 null-terminated 문자열에 대한 포인터.

nShowCmd

   [in] 오픈되었을 때 어플리케이션이 어떻게 표시될지를 명세하는 플래그. lpFile이 문서 파일을 지정하고 있다면, 플래그는 간단

    히 연결된 어플리케이션으로 전달된다. 어떻게 처리할지는 결정하는 것은 어플리케이션 책임이다.

    SW_HIDE

    SW_MAXIMIZE

    SW_MINIMIZE

    SW_RESTORE

    SW_SHOW

    SW_SHOWDEFAULT

    SW_SHOWMAXIMIZED

    SW_SHOWMINIMIZED

    SW_SHOWMINNOACTIVE

    SW_SHOWNA

    SW_SHOWNOACTIVATE

    SW_SHOWNORMAL

 

Return Values

    0  OS가 out of memory 또는 resource

    ERROR_FILE_NOT_FOUND  지정한 파일을 찾을 수 없다.

    ERROR_PATH_NOT_FOUND  지정한 경로를 찾을 수 없다

    ERROR_BAD_FORMAT  .exe 파일이 유효하지 않다.

    SE_ERR_ACCESSDENIED  OS가 지정할 파일에 대한 접근을 거부한다.

    SE_ERR_ASSOCINCOMPLETE  파일 이름 연결이 완성되지 않았거나 유효하지 않다.

    SE_ERR_DDEBUSY  Dynamic Data Exchange(DDE) transaction이 완성되지 못한다 왜냐하면 다른 DDE transcation이 수행

                                 중 이기 때문이다.

    SE_ERR_DDEFAIL  DDE 트랜잭션이 실패했다.

    SE_ERR_DDETIMEOUT  DDE 트랜잭션이 완료되지 않는다 왜냐하면 요청한 타임이 다 되었기 때문이다.

    SE_ERR_DLLNOTFOUND  지정한 DLL을 찾을 수 없다.

    SE_ERR_FNF   지정한 파일을 찾을 수 없다.

    SE_ERR_NOASSOC

    SE_ERR_OOM

    SE_ERR_PNF

    SE_ERR_SHARE

 

Remark

    이 메소드는 폴더의 바로가기 메뉴 또는 레지스트리의 바로가기의 어떠한 명령어라도 수행할 수 있다.

    폴더를 열기 위해서, 다음의 호출 중의 하나를 사용하라.

 

    ShellExecute(handle, NULL, <fully_qualified_path_to_folder>, NULL, NULL, SW_SHOWNORMAL);

    또는

    ShellExecute(handle, "open", <fully_qualified_path_to_folder>, NULL, NULL, SW_SHOWNORMAL);

 

    폴더를 탐색하기 위해서 다음의 호출을 사용하라.

    ShellExecute(handle, "explore", <fully_qualified_path_to_folder>, NULL, NULL, SW_SHOWNORMAL);

 

    디렉토리에서 Shell의 Find 유틸리티를 실행하기 위해서는 다음의 호출을 사용하라.

    ShellExecute(handle, "find", <fully_qualified_path_to_folder>, NULL, NULL, 0);

 

    lpOperation이 NULL 이면, 함수는 lpFile로 명세된 파일을 오픈한다. lpOperation이 "open" 또는 "exploer"이면 함수는 폴더를

    열거나 탐색하려는 시도를 한다.

    ShellExecute를 호출하는 결과로 실행되는 어플리케이션에 대한 정보를 얻기 위해서는 ShellExecuteEx를 사용하라.

   

    Note 폴더 옵션의 Launch folder windows in a separate procee 설정은 ShellExecute에 영향을 미친다. 만약 이 옵션이 disa

    ble(기본 설정)이면 ShellExecute는 새로운 Explorer를 실행하는게 아니라 open Explorer 윈도우를 사용한다. 만약 Explorer

    윈도우가 열려 있지 않으면, ShellExecute는 새로운 것을 실행한다.

    Windows 95/98/Me : ShellExecute는 Microsoft Layer for Unicode에 의해 지원된다. 이것을 사용하기 위해서는, 특정한 파일

    을 여러분의 어플리케이션에 추가해야만 한다, Microsoft Layer for Unicode on Windows Me/98/95 Systems에 있는것 처럼.

 

Function Information

    Minimum DLL Version shell32.dll 버전 3.51 이후 버전

    Custom Implementation No

    Header shellapi.h

    Import library shell32.lib

    Minimum operating systems Windows NT 3.1, Windows 95

    Unicode Implemented as ANSI and Unicode versions

[출처] [MFC]ShellExecute Function|작성자 네이밍

 
Comment 0 Trackback 0

Trackback : http://fdin.tistory.com/trackback/35 관련글 쓰기

Top

prev 1 2 3 next