HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2007
0613
cgiでのバイナリデータの受け取り2解決


リンク

2007/6/13(Wed) 01:43:45|NO.8907

はじめまして、
HSPでのCGIの使用について少々不明な点があったので質問させていただきます。

画像や、ファイルなどのバイナリファイルをアップロードできるcgiを
作ろうかと考えていたのですが、

html側
--------------------------------------------------------
<FORM METHOD="POST" ENCTYPE="multipart/form-data" ACTION="./post.cgi" name="Form">
<INPUT TYPE=file SIZE="40" NAME="file">
<INPUT TYPE=submit VALUE="Upload">
--------------------------------------------------------

として、cgiの受け側を
--------------------------------------------------------
#runtime "hsp3cl"
#uselib "Kernel32.dll"
#func Get "GetEnvironmentVariableA" str,var,int

sdim size,256
Get "CONTENT_LENGTH", size, 256
fsize=int(size)
sdim buf, fsize
input buf
bsave dir_exe+"\\test.dat", buf, fsize

mes "Content-type: text/html\n"
mes "ContentSize:"+fsize+"<br>"
mes "files: test.dat"
end
--------------------------------------------------------

とすると、バイナリデータを受け取った際に、ヘッダ?の最初の
数文字だけ受け取り後は意味の無い文字列を受け取ってしまいます。
どのようにすれば正確なバイナリデータを受け取ることができるのでしょうか?
お願いいたします



この記事に返信する


pizza

リンク

2007/6/14(Thu) 19:29:32|NO.8920

inputではなくReadFileを使うのはどうでしょう?


#include "kernel32.as" #define STD_INPUT_HANDLE (-10) #define STD_OUTPUT_HANDLE (-11) // stdin取得 GetStdHandle STD_INPUT_HANDLE hStdIn = stat // stdinから読み込み ReadFile hStdIn, varptr(buf), fsize, varptr(readSize), 0 // stdout取得 GetStdHandle STD_OUTPUT_HANDLE hStdOut = stat // stdoutに書き込む WriteFile hStdOut, varptr(buf), fsize, varptr(writeSize), 0



リンク

2007/6/15(Fri) 02:45:21|NO.8940

ご回答ありがとうございます。
ReadFileで行けました^^;



ONION software Copyright 1997-2023(c) All rights reserved.