pb用PostUR上传图片问题,可以上传成功,但是上传后的图片打不开

zjl8008 2016-06-28 08:46:49
pb12.1 pb用PostUR上传图片,可以上传成功,但是上传后的图片打不开,文件大小一样。是不是编码的问题?

Blob lblb_args , lblb_pic
String ls_headers , ls_url , ls_args , ls_bndy
Long ll_length
n_internetresult lir_html
inet linet
integer li_file
// "Content-Disposition: form-data; name=~"uploadPDF_str~"~r~n~r~n" + &
// "123456~r~n" + &
// "--" + ls_bndy + "~r~n" + &
// "Content-Transfer-Encoding:binary~r~n~r~n~r~n"
//讀取圖片
//li_file = FileOpen(sle_1.text,StreamMode!,write!,shared!,replace!,encodingAnsi!) //这行也不行,,encodingutf8!也不行
li_file = FileOpen(sle_1.text,StreamMode!)
FileReadEx(li_file,lblb_pic)
FileClose(li_file)
//建立網路物件
linet = Create inet
lir_html = CREATE n_internetresult
//ls_url = "http://192.168.1.31/Bodyguard/public/frontend/htmlDemo/htmlDemoFormUpload.html"
ls_url='http://192.168.1.31/Bodyguard/public/index.php/test/test/uploadImage'
//建立分隔字串
ls_bndy = "----" + String(cpu()) + "----"
//先產生其它argument資料
ls_args = "--" + ls_bndy + "~r~n" + &
'Content-Disposition: form-data; name="uploadImage"; filename="'+'test.jpg'+'"~r~n' +&
"Content-Type: image/jpeg~r~n~r~n~r~n"


//轉成binary後加上圖片資料與結束符號
//lblb_args = blob(ls_args,encodingUtf8!) + lblb_pic &
//+ blob("~r~n--" + ls_bndy + "--~r~n",encodingUtf8!)
//blob(string(lblb_pic,encodingUtf8!),encodingUtf8!)
lblb_args = blob(ls_args,encodingUtf8!) + lblb_pic &
+ blob("~r~n~r~n--" + ls_bndy + '~r~nContent-Disposition: form-data; name="str"~r~n',encodingUtf8!)&
+ blob("~r~n" +'',encodingUtf8!)&
+ blob("~r~n~r~n--" + ls_bndy + '~r~nContent-Disposition: form-data; name="use"~r~n',encodingUtf8!)&
+ blob("~r~n" +'image',encodingUtf8!)&
+ blob("~r~n~r~n--" + ls_bndy + '~r~nContent-Disposition: form-data; name="fileId"~r~n',encodingUtf8!)&
+ blob("~r~n" +'uploadImage',encodingUtf8!)&
+ blob("~r~n--" + ls_bndy + "--~r~n",encodingUtf8!)
//計算Argumments長度
ll_length = Len(lblb_args)
ls_headers = "Content-Type: multipart/form-data; boundary=" + ls_bndy + "~r~n" + &
"Content-Length:" + String(ll_length) + "~r~n~r~n"
//Post方式上傳檔案
linet.PostURL (ls_url, lblb_args, ls_headers, 80, lir_html)
if isnull(lir_html.is_text) then lir_html.is_text=''
mle_1.text=lir_html.is_text
mle_2.text= ls_headers+'~r~n'+string(lblb_args,encodingUtf8!)
destroy lir_html
destroy linet
...全文
388 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
pcwe2002 2016-06-30
  • 打赏
  • 举报
回复
封装好的方法

long ll_rtn,ll_http
String ls_path

ls_path = "d:/uecc-sdk-demo.zip"

ll_http = n_api.SATHTTP_Create()
n_api.SATHTTP_AddFormFile( ll_http, ls_path, "file/2.zip")
ll_rtn = n_api.SATHTTP_PostForm(ll_http,"http://127.0.0.1/upload/file.go")
n_api.SATHTTP_Destroy(ll_http)

if ll_rtn = 200 then
	messagebox("","成功!")
else
	messagebox("",ll_rtn)
end if
地址:http://download.csdn.net/detail/pcwe2002/9523299
zjl8008 2016-06-30
  • 打赏
  • 举报
回复
引用 5 楼 jiang396 的回复:
版主能不不能分享一下php的接收的代码? http://192.168.1.31/Bodyguard/public/index.php/test/test/uploadImage
php代码我也没有,是对方的
WorldMobile 2016-06-29
  • 打赏
  • 举报
回复
如果以上方式不行,直接上传二进制流试试
WorldMobile 2016-06-29
  • 打赏
  • 举报
回复
应该是编码方式不一致引起的,别用UTF-8,用gb2312试试,如果不行,把文件用ultraedit打开,比较一下看看哪个地方错了
北京大丸子 2016-06-29
  • 打赏
  • 举报
回复
版主能不不能分享一下php的接收的代码? http://192.168.1.31/Bodyguard/public/index.php/test/test/uploadImage
北京大丸子 2016-06-29
  • 打赏
  • 举报
回复
挺好的功能,学习了
pcwe2002 2016-06-28
  • 打赏
  • 举报
回复
把上传后的图片与原图片二进制比较下,看看区别

1,077

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 相关问题讨论
社区管理员
  • 基础类社区
  • WorldMobile
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧