NativeScript:相机拍照并使用 nativescript-background-http 上传
NativeScript: Camera takePicture and upload with nativescript-background-http
我正在尝试使用 NativeScript 相机模块拍照,然后使用 nativescript-background-http 上传它(因为据我所知,这是目前在 NS 中上传的唯一方式)。我正在使用 iOS 模拟器,但在 Android 模拟器上也出现错误。
相机插件工作正常,可以拍摄照片并将其保存到文件中。但是我在之后的路径上传图片时遇到了问题
这是我的代码:
import cameraModule = require('camera')
import imageModule = require('ui/image')
import enumsModule = require('ui/enums')
import fsModule = require('file-system')
import bgHttpModule = require('nativescript-background-http')
const options = { width: 300, height: 300, keepAspectRatio: true }
const format = enumsModule.ImageFormat.jpeg
cameraModule.takePicture(options).then(imageSource => {
let contentType = `image/${format}`
let savePath = fsModule.knownFolders.documents().path
let fileName = 'img_' + new Date().getTime() + '.' + format
let filePath = fsModule.path.join( savePath, fileName )
if ( imageSource.saveToFile( filePath, format ) ) {
var session = bgHttpModule.session('image-upload')
var options = {
url: 'http://192.168.99.100:8003',
method: 'POST',
headers: {
'Content-Type': 'application/octet-stream',
'File-Name': fileName
},
description: '{ \'uploading\': ' + fileName + ' }'
}
let task = session.uploadFile(filePath, options)
task.on('progress', logEvent)
task.on('error', logEvent)
task.on('complete', logEvent)
function logEvent(e) {
console.log(e.eventName)
}
}
})
我得到的错误是:
应用程序错误:错误 /Users/user/Library/Developer/CoreSimulator/Devices/11C75134-AC52-46B8-87F6-58A61B8A1E0C/data/Containers/Data/Applicatio ... 538.jpeg 不是有效文件:// url 未定义
但是,如果我转到那条路径,则具有该名称的图片就在那里并且有效。我做错了什么吗?
我可以通过在任务行前面加上 "file://" 来消除这个错误
var task = session.uploadFile("file://" + this.filePath, request);
它在模拟器中工作,但我还没有在实际设备上测试过它。
我正在尝试使用 NativeScript 相机模块拍照,然后使用 nativescript-background-http 上传它(因为据我所知,这是目前在 NS 中上传的唯一方式)。我正在使用 iOS 模拟器,但在 Android 模拟器上也出现错误。
相机插件工作正常,可以拍摄照片并将其保存到文件中。但是我在之后的路径上传图片时遇到了问题
这是我的代码:
import cameraModule = require('camera')
import imageModule = require('ui/image')
import enumsModule = require('ui/enums')
import fsModule = require('file-system')
import bgHttpModule = require('nativescript-background-http')
const options = { width: 300, height: 300, keepAspectRatio: true }
const format = enumsModule.ImageFormat.jpeg
cameraModule.takePicture(options).then(imageSource => {
let contentType = `image/${format}`
let savePath = fsModule.knownFolders.documents().path
let fileName = 'img_' + new Date().getTime() + '.' + format
let filePath = fsModule.path.join( savePath, fileName )
if ( imageSource.saveToFile( filePath, format ) ) {
var session = bgHttpModule.session('image-upload')
var options = {
url: 'http://192.168.99.100:8003',
method: 'POST',
headers: {
'Content-Type': 'application/octet-stream',
'File-Name': fileName
},
description: '{ \'uploading\': ' + fileName + ' }'
}
let task = session.uploadFile(filePath, options)
task.on('progress', logEvent)
task.on('error', logEvent)
task.on('complete', logEvent)
function logEvent(e) {
console.log(e.eventName)
}
}
})
我得到的错误是:
应用程序错误:错误 /Users/user/Library/Developer/CoreSimulator/Devices/11C75134-AC52-46B8-87F6-58A61B8A1E0C/data/Containers/Data/Applicatio ... 538.jpeg 不是有效文件:// url 未定义
但是,如果我转到那条路径,则具有该名称的图片就在那里并且有效。我做错了什么吗?
我可以通过在任务行前面加上 "file://" 来消除这个错误
var task = session.uploadFile("file://" + this.filePath, request);
它在模拟器中工作,但我还没有在实际设备上测试过它。