将带有数据的图像上传到服务器 Titanium
upload image with data to server Titanium
我有一些数据需要使用
将其与图像一起上传到服务器
multipart/form-data
但是我收到请求超时这是我的数据
var data={
property_name:p_n_txt.value,
friendly_name:f_txt.value,
property_type:clicked,
size:space_Slider.getValue(),
price:price_Slider.getValue(),
number_of_bedrooms:bedrooms_Slider.getValue(),
number_of_bathrooms:bathrooms_Slider.getValue(),
number_of_parkings:p_space_Slider.getValue(),
location:a_txt.value,
features:13,
payment_method:4,
image1_name:"image0.png",
image1:Ti.Filesystem.getFile(Ti.Filesystem.tempDirectory,Ti.App.Properties.getString("filename")),
};
并且 httpclient 是
var xhr = Ti.Network.createHTTPClient({
onload: function() {
var myData = JSON.parse(this.responseText);
console.log(this.responseText);
},
// function called when an error occurs, including a timeout
onerror : function(e) {
Ti.API.debug(e.error);
console.log(this.status);
console.log(e.error);
},
timeout : 20000
});
xhr.open('POST','http://url/');
xhr.setRequestHeader("enctype", "multipart/form-data");
xhr.setRequestHeader("Content-Type", "image/png");
// xhr.setRequestHeader("Content-Type", "image/jpeg");
xhr.send(data);
});
这里应该是表单数据而不是 json 所以不需要添加 json.stringify
但我有 4 个案例我试过
首先:使用 stringify,如果我添加了 contentType "image/png"
,我会得到 HTTP 415
如果我没有添加 HTTP 500
第二个没有 stringify 当我添加添加的 contentType "image/png" 我得到请求超时
当我没有添加它时,我得到 HTTP 413
关于如何完成这个的任何想法,因为我发现了很多关于它的问题,但没有人对我有帮助
谢谢
为什么不尝试将图像编码为 base64 编码并将其传递,然后在服务器端对其进行解码,您就可以继续进行了。
Ti.Utils.base64encode(image.toBlob()).toString();
这可以发送到服务器,不需要 headers 发送。
我有一些数据需要使用
将其与图像一起上传到服务器multipart/form-data
但是我收到请求超时这是我的数据
var data={
property_name:p_n_txt.value,
friendly_name:f_txt.value,
property_type:clicked,
size:space_Slider.getValue(),
price:price_Slider.getValue(),
number_of_bedrooms:bedrooms_Slider.getValue(),
number_of_bathrooms:bathrooms_Slider.getValue(),
number_of_parkings:p_space_Slider.getValue(),
location:a_txt.value,
features:13,
payment_method:4,
image1_name:"image0.png",
image1:Ti.Filesystem.getFile(Ti.Filesystem.tempDirectory,Ti.App.Properties.getString("filename")),
};
并且 httpclient 是
var xhr = Ti.Network.createHTTPClient({
onload: function() {
var myData = JSON.parse(this.responseText);
console.log(this.responseText);
},
// function called when an error occurs, including a timeout
onerror : function(e) {
Ti.API.debug(e.error);
console.log(this.status);
console.log(e.error);
},
timeout : 20000
});
xhr.open('POST','http://url/');
xhr.setRequestHeader("enctype", "multipart/form-data");
xhr.setRequestHeader("Content-Type", "image/png");
// xhr.setRequestHeader("Content-Type", "image/jpeg");
xhr.send(data);
});
这里应该是表单数据而不是 json 所以不需要添加 json.stringify
但我有 4 个案例我试过
首先:使用 stringify,如果我添加了 contentType "image/png"
,我会得到 HTTP 415
如果我没有添加 HTTP 500
第二个没有 stringify 当我添加添加的 contentType "image/png" 我得到请求超时
当我没有添加它时,我得到 HTTP 413
关于如何完成这个的任何想法,因为我发现了很多关于它的问题,但没有人对我有帮助
谢谢
为什么不尝试将图像编码为 base64 编码并将其传递,然后在服务器端对其进行解码,您就可以继续进行了。
Ti.Utils.base64encode(image.toBlob()).toString();
这可以发送到服务器,不需要 headers 发送。