【发布时间】:2018-03-22 18:36:35
【问题描述】:
我正在尝试使用 phonegap 文件传输 API 将图像从我的手机上传到 WCF 服务器。 以下是我的代码。但我无法将图像上传到服务器。请给点建议。
Test.html
<body >
<div data-role="view" id="uploadView" data-reload="true">
<div data-role="content">
<button onclick="getphoto();">get a Photo</button>
<img src="" id="myimg" style="border:1px solid #0f0;height:200px;width:200px;" />
</div>
</div>
<script>
function getphoto() {
navigator.camera.getPicture(
uploadPhoto,
function(message) {
alert('get picture failed');
},
{
quality: 10,
destinationType:navigator.camera.DestinationType.FILE_URI,
sourceType:navigator.camera.PictureSourceType.PHOTOLIBRARY
}
);
}
function uploadPhoto(imageURI) {
document.getElementById("myimg").src = imageURI;
var options = new FileUploadOptions();
options.chunkedMode = false;
options.fileKey = "recFile";
var imagefilename = imageURI;
options.fileName = imagefilename;
options.mimeType = "image/jpeg";
var ft = new FileTransfer();
alert(imagefilename);
ft.upload(imageURI, "http://myserver/MyAppService.svc/SaveImage", win, fail, options);
}
function win(r) {
//console.log("Code = " + r.responseCode);
//console.log("Response = " + r.response);
alert("Sent = " + r.bytesSent);
}
function fail(error) {
switch (error.code) {
case FileTransferError.FILE_NOT_FOUND_ERR:
alert("Photo file not found");
break;
case FileTransferError.INVALID_URL_ERR:
alert("Bad Photo URL");
break;
case FileTransferError.CONNECTION_ERR:
alert("Connection error");
break;
}
alert("An error has occurred: Code = " + error.code);
}
</script>
</body>
这是我的 WCF 服务。
IMyService.cs
namespace MyAppService
{
[ServiceContract]
public interface IMyService
{
[OperationContract]
[WebInvoke(BodyStyle = WebMessageBodyStyle.Wrapped, Method = "POST", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, UriTemplate = "SaveImage")]
string SaveImage();
}
}
MyService.svc.cs
namespace MyAppService
{
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class MyService : IMyService
{
public string SaveImage()
{
HttpPostedFile file = HttpContext.Current.Request.Files["recFile"];
if (file == null)
return null;
string targetFilePath = AppDomain.CurrentDomain.BaseDirectory + @"Images\Tree\\" + file.FileName;
file.SaveAs(targetFilePath);
return file.FileName.ToString();
}
}
}
谢谢
【问题讨论】:
-
错误是什么?日志说什么?
-
System.NullReferenceException:对象引用未设置为对象的实例。在 MyAppService.SaveImage()
-
我认为我的服务有问题。 HttpPostedFile 文件 = HttpContext.Current.Request.Files["recFile"];越来越为空
-
如果您可以访问 Windows 机器,我可以给您的最佳建议是设置Fiddler,从设备代理到它,然后检查来自设备到服务器。与 Cordova 打交道时可能会遇到很多有趣的跨源问题。
-
您是否独立测试过您的网络服务?使用 Google Chrome 的扩展程序 Advance REST Client 对其进行测试
标签: wcf cordova file-transfer