开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 1770|回复: 9
收起左侧

[完成] JS POST提交

 关闭 [复制链接]
结帖率:95% (54/57)
发表于 2021-1-29 12:04:24 | 显示全部楼层 |阅读模式   广西壮族自治区南宁市
100精币
上面是常量1,
易语言中可以通过子字节替换来实现把字符串和图片拼接在一起进行POST提交,
求大佬教一下用JS怎么实现







补充内容 (2021-1-29 13:38):
易语言代码在三楼

最佳答案

查看完整内容

字节集都获取到,然后做处理。没有做过研究。但如果是网页,跨域有问题这里简单合并下载。 [md]```html let f = document.getElementsByTagName('input')[0] f.addEventListener('change', function (e) { let file = this.files[0] let fileReader = new FileReader fileReader.onload = function () { let result = fileReader.result console.log('') console.log(result) str2Ab('|| ...
结帖率:43% (12/28)
发表于 2021-1-29 12:04:25 | 显示全部楼层   四川省成都市
字节集都获取到,然后做处理。没有做过研究。但如果是网页,跨域有问题这里简单合并下载。
<!DOCTYPE html>
<html>

<head>

</head>

<body>
  <input type="file" name="" id="">
  <script>
    let f = document.getElementsByTagName('input')[0]

f.addEventListener('change', function (e) {
  let file = this.files[0]
  let fileReader = new FileReader
  fileReader.onload = function () {
    let result = fileReader.result
    console.log('[input-change]')
    console.log(result)
    str2Ab('|||||125.la', (result_str) => {
      /* your code 
        到这里已经把字节集获取到了。
        可以从EXIF入手。
        这里简单的实现合并下载。
        提交也是一样的道理。
当然肯定是会有跨域问题的。
      */
      let change = mergeArrayBuffer(result,result_str)
      download(change)
    })
  }
  fileReader.readAsArrayBuffer(file)

})

//文本到ArrayBuffer
function str2Ab(str, callback) {
  let blob = new Blob([str], { type: 'text/plain' })
  let fileReader = new FileReader()
  fileReader.onload = function () {
    if (callback) {
      callback.call(null, fileReader.result)
    }
  }
  fileReader.readAsArrayBuffer(blob)
}

//合并
function mergeArrayBuffer(...arrays) {
  let totalLen = 0
  for (let i = 0; i < arrays.length; i++) {
    arrays[i] = new Uint8Array(arrays[i]) //全部转成Uint8Array
    totalLen += arrays[i].length
  }

  let res = new Uint8Array(totalLen)

  let offset = 0
  for (let arr of arrays) {
    res.set(arr, offset)
    offset += arr.length
  }

  return res.buffer
}

function download(buffer){
  let url = URL.createObjectURL(new Blob([buffer],{type:'arraybuffer'}))
  let link = document.createElement('a')
  link.style.display = 'none'
  link.href = url
  link.setAttribute('download','change.jpg')
  document.body.appendChild(link)
  link.click()
  document.body.removeChild(link)
}
  </script>
</body>

</html>
回复

使用道具 举报

结帖率:95% (54/57)
 楼主| 发表于 2021-1-29 13:24:12 | 显示全部楼层   广西壮族自治区南宁市
常量1

------WebKitFormBoundaryYTwvlk5brGmyD3Mn
Content-Disposition: form-data; name="flag"

1
------WebKitFormBoundaryYTwvlk5brGmyD3Mn
Content-Disposition: form-data; name="pic_path"; filename="文件名"
Content-Type: image/png

路径
------WebKitFormBoundaryYTwvlk5brGmyD3Mn--


  
子程序名返回值类型公开备 注
子程序1  
参数名类 型参考可空数组备 注
传递指针整数型
变量名类 型静态数组备 注
路径文本型 
文件名文本型 
数据字节集 
响应文本型 
链接文本型 
json类_json 
路径 = 指针到文本 (传递指针)
调试输出 (路径)
文件名 = 取文本右边 (路径, 取文本长度 (路径)倒找文本 (路径, “\”, , ))
调试输出 (“路径:”, 路径)
调试输出 (“文件名:”, 文件名)
数据 = 到字节集 ( #常量1 )
数据 = 子字节集替换 (数据, 到字节集 (“文件名”), 到字节集 (文件名), , )
数据 = 子字节集替换 (数据, 到字节集 (“路径”), 读入文件 (路径), , )
响应 = 到文本 (网页_访问_对象 (“http://pic.sogou.com/ris_upload”, 1, , , , “Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryYTwvlk5brGmyD3Mn”, , , 真, 数据))
' 调试输出 (响应)



i支持库列表   支持库注释   
spec特殊功能支持库


回复

使用道具 举报

结帖率:71% (25/35)
发表于 2021-1-29 13:29:52 | 显示全部楼层   广东省江门市
看不到图
回复

使用道具 举报

结帖率:95% (54/57)
 楼主| 发表于 2021-1-29 13:37:21 | 显示全部楼层   广西壮族自治区南宁市
.版本 2
.支持库 spec

.子程序 子程序1
.参数 传递指针, 整数型
.局部变量 路径, 文本型
.局部变量 文件名, 文本型
.局部变量 数据, 字节集
.局部变量 响应, 文本型
.局部变量 链接, 文本型
.局部变量 json, 类_json

路径 = 指针到文本 (传递指针)
调试输出 (路径)
文件名 = 取文本右边 (路径, 取文本长度 (路径) - 倒找文本 (路径, “\”, , 假))
调试输出 (“路径:”, 路径)
调试输出 (“文件名:”, 文件名)

数据 = 到字节集 (#常量1)
数据 = 子字节集替换 (数据, 到字节集 (“文件名”), 到字节集 (文件名), , )
数据 = 子字节集替换 (数据, 到字节集 (“路径”), 读入文件 (路径), , )
响应 = 到文本 (网页_访问_对象 (“http://pic.sogou.com/ris_upload”, 1, , , , “Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryYTwvlk5brGmyD3Mn”, , , 真, 数据))
' 调试输出 (响应)

链接 = 文本_取出中间文本 (响应, “<a href=” + #引号, #引号 + “>”)
调试输出 (“相似图片:”, 链接)
回复

使用道具 举报

结帖率:95% (54/57)
 楼主| 发表于 2021-1-29 13:38:11 | 显示全部楼层   广西壮族自治区南宁市
下面是易语言代码

搜狗post上传图片.e

95.07 KB, 下载次数: 10, 下载积分: 精币 -1 枚

回复

使用道具 举报

结帖率:95% (54/57)
 楼主| 发表于 2021-1-29 13:39:26 | 显示全部楼层   广西壮族自治区南宁市

代码在三楼。老哥帮忙看看
回复

使用道具 举报

结帖率:83% (10/12)

签到天数: 1 天

发表于 2021-1-29 13:54:41 | 显示全部楼层   上海市上海市
直接文本_替换() post字节集提交不就行了吗
回复

使用道具 举报

结帖率:95% (54/57)
 楼主| 发表于 2021-1-29 15:14:32 | 显示全部楼层   广西壮族自治区南宁市
by626 发表于 2021-1-29 13:54
直接文本_替换() post字节集提交不就行了吗

我要改成JS语言~
回复

使用道具 举报

结帖率:71% (25/35)
发表于 2021-1-29 15:28:29 | 显示全部楼层   广东省江门市
yuwu00 发表于 2021-1-29 13:39
代码在三楼。老哥帮忙看看

要在浏览器环境执行,还是在nodejs环境中执行?

补充内容 (2021-1-29 16:09):
如果改成在浏览器执行的JS,上传图片到别人的服务器的话那肯定会跨域的。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表