使用PhoneGap将图像上传到.NET WCF Rest服务
问题描述:
我正面临从相机和图库中上传文件的问题。使用PhoneGap将图像上传到.NET WCF Rest服务
从图库中选择几张图片时,我能够成功上传图片到WCF服务。因此,WCF服务工作正常,上传文件的代码也是如此,同样的代码也适用于模拟网络摄像头。
但是从图片库中选取一些图片时,我得到* 错误代码*
java.io.FileNotFoundException: http://www.foobar.com/sasas
JavaScript代码
function selectImageFromCamera(){
var popover = new CameraPopoverOptions(300,300,100,100,Camera.PopoverArrowDirection.ARROW_ANY);
var options = { quality: 49, destinationType: Camera.DestinationType.FILE_URI,sourceType: Camera.PictureSourceType.CAMERA, popoverOptions : popover};
navigator.camera.getPicture(this.uploadPhoto, this.onFail, options);
}
function selectImageFromGallery(){
var popover = new CameraPopoverOptions(300,300,100,100,Camera.PopoverArrowDirection.ARROW_ANY);
var options = { quality: 49, destinationType: Camera.DestinationType.FILE_URI,sourceType: navigator.camera.PictureSourceType.PHOTOLIBRARY, popoverOptions : popover};
navigator.camera.getPicture(this.uploadPhoto, this.onFail, options);
}
function uploadPhoto(imageURI) {
var serverUrl = "http://www.foobar.com/safafa";
var image = document.getElementById("imgUpload");
image.style.display = "block";
image.src = imageURI;
var fileUploadOptions = new FileUploadOptions();
fileUploadOptions.fileKey="file";
fileUploadOptions.fileName=imageURI.substr(imageURI.lastIndexOf('/')+1);
fileUploadOptions.mimeType="image/png";
fileUploadOptions.chunkedMode=true;
var ft = new FileTransfer();
ft.upload(imageURI, serverUrl, this.win, this.fail, fileUploadOptions);
}
请帮我找出我在做什么错误。
答
这对我有效。
问题出在WCF服务上。其接受的文件小于65 KB,这是在增加maxReceivedMessageSize
值问题之后默认的最大请求大小。
<standardEndpoint name=""
helpEnabled="true"
automaticFormatSelectionEnabled="true"
maxBufferSize="2147483647"
maxReceivedMessageSize="2147483647">
</standardEndpoint>
答
你的PhoneGap代码似乎没问题,但只是检查你的WCF服务web.config文件。
你会想要这样的东西来增加文件的大小。
<bindings>
<basicHttpBinding>
<binding name="basicHttp" allowCookies="true"
maxReceivedMessageSize="10000000"
maxBufferSize="10000000"
maxBufferPoolSize="10000000">
<readerQuotas maxDepth="32"
maxArrayLength="100000000"
maxStringContentLength="100000000"/>
</binding>
</basicHttpBinding>
</bindings>
其中100000000
是您的文件大小。
+0
它工作了吗。 – Ayush 2013-05-17 04:53:28
您是否已检查权限设置?也许不允许访问文件。 – Mario 2013-05-15 05:26:30
@Mario,谢谢你的回复。没有权限问题。它似乎是WCF服务的问题。它接受的文件小于65 KB,这是在增加WCF请求值问题之后默认情况下的最大请求大小 – Satpal 2013-05-15 11:16:01
您恰好拥有WCF服务的代码?我遇到无法从cordova文件传输上传图像的问题? – sioesi 2016-10-13 22:00:42