我有一个phonegap jquery应用程序,可以打开相机并拍照。将jpg图像的jQuery ajax后置为.net webservice。图像结果损坏
然后我把这张照片张贴到一个.net webservice,至少我已经编码了。
我不能使用phonegap FileTransfer,因为这不是由Bada os支持的,这是必需的。
我已经成功从phonegap FileSystem API加载图像,我已将它附加到.ajax类型中:我甚至从.net端收到它,但当.net将图像保存到服务器时,图像效果损坏
- >>这是一个正确的Base64编码的文件,但有这样的标题 “数据:图像/ JPEG; BASE64,/ 9J/4AAQ ..... =”
怎么办我摆脱这个标题?我应该从.net还是从ajax修剪它?
任何帮助将不胜感激。
这是我的代码:
//PHONEGAP CAMERA ACCESS (summed up)
navigator.camera.getPicture(onGetPictureSuccess, onGetPictureFail, { quality: 50, destinationType:Camera.DestinationType.FILE_URI });
window.resolveLocalFileSystemURI(imageURI, onResolveFileSystemURISuccess, onResolveFileSystemURIError);
fileEntry.file(gotFileSuccess, gotFileError);
new FileReader().readAsDataURL(file);
//UPLOAD FILE
function onDataReadSuccess(evt) {
var image_data = evt.target.result;
var filename = unique_id();
var filext = "jpg";
$.ajax({
type : 'POST',
url : SERVICE_BASE_URL+"/fotos/"+filename+"?ext="+filext,
cache: false,
timeout: 100000,
processData: false,
data: image_data,
contentType: 'image/jpeg',
success : function(data) {
console.log("Data Uploaded with success. Message: "+ data);
$.mobile.hidePageLoadingMsg();
$.mobile.changePage("ok.html");
}
});
}
在我的.NET Web服务,这是被调用的方法:
public string FotoSave(string filename, string extension, Stream fileContent)
{
string filePath = HttpContext.Current.Server.MapPath("~/foto_data/") + "\\" + filename;
FileStream writeStream = new FileStream(filePath, FileMode.OpenOrCreate, FileAccess.Write);
int Length = 256;
Byte[] buffer = new Byte[Length];
int bytesRead = readStream.Read(buffer, 0, Length);
// write the required bytes
while (bytesRead > 0)
{
writeStream.Write(buffer, 0, bytesRead);
bytesRead = readStream.Read(buffer, 0, Length);
}
readStream.Close();
writeStream.Close();
}
什么是传入的EVT paramater? – PsychoDUCK 2012-06-06 20:37:20