使用post将十六进制文件数据发送到不同的域

时间:2017-07-18 03:34:12

标签: javascript java ajax xmlhttprequest

是否可以使用多部分表单数据通过手动构建标头来发送此形式的请求。此文件也将是content / mime类型。当我创建这种形式的请求时,请求到达服务器,但是那里收到的数据为空。此外,我收到跨域请求的错误消息,因为它不是jsonp。有没有办法完成这个作为一个帖子请求。 Java用作服务器端。

2 个答案:

答案 0 :(得分:0)

对于您的跨域请求,您需要将跨域资源共享(CORS)标头添加到服务器:类似Access-Control-Allow-Origin: *。不完全确定Java服务器的位置,但如果之前已经为服务器设置了标头,那么CORS标头就会随之而来。我不完全确定通过JavaScript发送原始二进制文件。也许别人知道的更好。

答案 1 :(得分:0)

基本上,您只需要执行xhr POST / PUT请求。但首先将文件输入输入。

这是我在旧项目中找到的一个举例:

const fileInput = document.getElementById('file-input')
const file = fileInput.files[0]
const xhr = new XMLHttpRequest()

xhr.onerror = (e) => {
  console.log(e)
}

xhr.upload.addEventListener('progress', (e) => {
  // handle notifications about upload progress: e.loaded / e.total
  const { loaded, total } = e
  console.log(`${loaded} / ${total}`)
}, false)

xhr.onreadystatechange = () => {
  if (xhr.readyState === XMLHttpRequest.DONE) {
    if (xhr.status >= 200 && xhr.status <= 299) {
      // upload completed
    }
  }
}

xhr.open('PUT', 'linktoupload', true)
xhr.setRequestHeader('Content-Type', 'application/octet-stream')
xhr.send(file)