使用iOS Swift上传图像
我正在尝试将图像上载到我的jersey服务器。这是我的Swift代码:使用iOS Swift上传图像,ios,rest,swift,upload,jersey,Ios,Rest,Swift,Upload,Jersey,我正在尝试将图像上载到我的jersey服务器。这是我的Swift代码: var url:NSURL = NSURL.URLWithString("http://www.quentinroussat.fr/assets/img/iOS%20icon's%20Style/ios8.png") var payload:NSData = NSData.dataWithContentsOfURL(url, options: nil, error: nil) var err: NSErr
var url:NSURL = NSURL.URLWithString("http://www.quentinroussat.fr/assets/img/iOS%20icon's%20Style/ios8.png")
var payload:NSData = NSData.dataWithContentsOfURL(url, options: nil, error: nil)
var err: NSError?
var imageData :NSData = NSData.dataWithContentsOfURL(url,options: NSDataReadingOptions.DataReadingMappedIfSafe, error: &err)
let endpoint: NSURL = NSURL(string: "http://localhost:8080/rest/service/Upload")
let request = NSMutableURLRequest(URL: endpoint)
request.HTTPMethod = "POST"
// set Content-Type in HTTP header
let boundaryConstant = "----------V2ymHFg03esomerandomstuffhbqgZCaKO6jy";
let contentType = "multipart/form-data; boundary=" + boundaryConstant
request.HTTPBody = imageData
request.addValue(contentType, forHTTPHeaderField: "Content-Type")
request.addValue("multipart/form-data", forHTTPHeaderField: "Accept")
var response: NSURLResponse? = nil
var error: NSError? = nil
let task = NSURLSession.sharedSession().uploadTaskWithRequest(request, fromData: imageData, completionHandler: {data, response, error -> Void in
println(request)
println(response)
// println(payload)
})
task.resume()
这是我的球衣服务:
@POST
@Consumes(MediaType.MULTIPART_FORM_DATA)
@Produces(MediaType.APPLICATION_JSON)
@Path("/Upload")
public Response fileUpload(
@FormDataParam("file") InputStream uploadedInputStream,
@FormDataParam("file") FormDataContentDisposition fileInfo)
throws IOException
{
final String FILE_UPLOAD_PATH = "/Users/Luke/Documents/Temp/Uploads";
Response.Status respStatus = Response.Status.OK;
if (fileInfo == null)
{
respStatus = Response.Status.INTERNAL_SERVER_ERROR;
}
else
{
final String fileName = fileInfo.getFileName();
String uploadedFileLocation = FILE_UPLOAD_PATH + File.separator
+ fileName;
try
{
saveToDisc(uploadedInputStream, uploadedFileLocation);
}
catch (Exception e)
{
respStatus = Response.Status.INTERNAL_SERVER_ERROR;
e.printStackTrace();
}
}
return Response.status(respStatus).build();
}
我知道这项服务可以通过标准的html页面上传,但是,通过模拟器,没有任何东西可以到达其余的端点。我对斯威夫特显然是个新手,所以任何指点都将不胜感激
以下是来自模拟器的请求/响应:
<NSMutableURLRequest: 0x79674830> { URL: http://localhost:8080/rest/service/Upload, headers: {
Accept = "multipart/form-data";
"Content-Type" = "multipart/form-data; boundary=----------V2ymHFg03esomerandomstuffhbqgZCaKO6jy";
{URL:http://localhost:8080/rest/service/Upload,标题:{
Accept=“多部分/表单数据”;
“内容类型”=“多部分/表单数据;边界=------------V2ymHFg03esomerandomstuffhbqgZCaKO6jy”;
}}
{URL:http://localhost:8080/rest/service/Upload }{状态代码:406,标题{
“内容长度”=0;
日期=“2014年9月28日星期日07:20:25 GMT”;
Server=“apachecoyote/1.1”;
}}如何修复它?
<NSHTTPURLResponse: 0x7871efa0> { URL: http://localhost:8080/rest/service/Upload } { status code: 406, headers {
"Content-Length" = 0;
Date = "Sun, 28 Sep 2014 07:20:25 GMT";
Server = "Apache-Coyote/1.1";