Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

support upload file to phone by pc web #122

Open
wants to merge 7 commits into
base: master
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 24 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -3,6 +3,30 @@

A cross platform component for serving static assets with React Native.

### 更新

基于原始react-native-static-server项目新增功能:

#### 新增`startUploader`函数

使用方法:

```
const server = new StaticServer(0);
server.startUploader().then(uploaderUrl => console.log(uploaderUrl));
```

1. 基于https://github.com/swisspol/GCDWebServer/blob/master/GCDWebUploader/GCDWebUploader.h 实现pc文件上传到ios里的功能。
2. 文件会默认保存到app document目录下的`/uploader`文件夹里。
3. 目前不支持Android

##### TODO list

1. 基于GCDWebUploader限制上传文件的后缀名
2. 自定义上传页面的title header 等



## Getting started

`$ npm install react-native-static-server --save`
6 changes: 6 additions & 0 deletions StaticServerExample/App.tsx
Original file line number Diff line number Diff line change
@@ -44,6 +44,12 @@ export default function App (props: ITestViewProps): JSX.Element {
const dest = path + file
const startServer = async (): Promise<void> => {
const newServer = new StaticServer(port, root, { localOnly: true })
const uploaderUrl = await newServer.startUploader();
console.log(uploaderUrl);
setTimeout(()=>{
console.log('stop uploader');
newServer.stopUploader();
}, 10000);
const origin = await newServer.start()
setOrigin(origin)
setServer(newServer)
29 changes: 24 additions & 5 deletions StaticServerExample/ios/Podfile
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
platform :ios, '9.0'
platform :ios, '11.0'
require_relative '../node_modules/@react-native-community/cli-platform-ios/native_modules'
def add_flipper_pods!(versions = {})
versions['Flipper'] ||= '~> 0.33.1'
versions['Flipper'] ||= '0.87.0'
versions['DoubleConversion'] ||= '1.1.7'
versions['Flipper-Folly'] ||= '~> 2.1'
versions['Flipper-Folly'] ||= '2.5.3'
versions['Flipper-Glog'] ||= '0.3.6'
versions['Flipper-PeerTalk'] ||= '~> 0.0.4'
versions['Flipper-RSocket'] ||= '~> 1.0'
versions['Flipper-RSocket'] ||= '1.3.1'
pod 'FlipperKit', versions['Flipper'], :configuration => 'Debug'
pod 'FlipperKit/FlipperKitLayoutPlugin', versions['Flipper'], :configuration => 'Debug'
pod 'FlipperKit/SKIOSNetworkPlugin', versions['Flipper'], :configuration => 'Debug'
@@ -81,6 +81,12 @@ target 'StaticServerExample' do
add_flipper_pods!
post_install do |installer|
flipper_post_install(installer)

## Fix for XCode 12.5
find_and_replace("../node_modules/react-native/React/CxxBridge/RCTCxxBridge.mm",
"_initializeModules:(NSArray<id<RCTBridgeModule>> *)modules", "_initializeModules:(NSArray<Class> *)modules")
find_and_replace("../node_modules/react-native/ReactCommon/turbomodule/core/platform/ios/RCTTurboModuleManager.mm",
"RCTBridgeModuleNameForClass(strongModule))", "RCTBridgeModuleNameForClass(Class(strongModule)))")
end
end
target 'StaticServerExample-tvOS' do
@@ -89,4 +95,17 @@ target 'StaticServerExample-tvOS' do
inherit! :search_paths
# Pods for testing
end
end
end

def find_and_replace(dir, findstr, replacestr)
Dir[dir].each do |name|
text = File.read(name)
replace = text.gsub(findstr,replacestr)
if text != replace
puts "Fix: " + name
File.open(name, "w") { |file| file.puts replace }
STDOUT.flush
end
end
Dir[dir + '*/'].each(&method(:find_and_replace))
end
130 changes: 71 additions & 59 deletions StaticServerExample/ios/Podfile.lock
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
PODS:
- boost-for-react-native (1.63.0)
- CocoaAsyncSocket (7.6.4)
- CocoaLibEvent (1.0.0)
- CocoaAsyncSocket (7.6.5)
- DoubleConversion (1.1.6)
- FBLazyVector (0.62.2)
- FBReactNativeSpec (0.62.2):
@@ -11,50 +10,61 @@ PODS:
- React-Core (= 0.62.2)
- React-jsi (= 0.62.2)
- ReactCommon/turbomodule/core (= 0.62.2)
- Flipper (0.33.1):
- Flipper-Folly (~> 2.1)
- Flipper-RSocket (~> 1.0)
- Flipper (0.87.0):
- Flipper-Folly (~> 2.5)
- Flipper-RSocket (~> 1.3)
- Flipper-DoubleConversion (1.1.7)
- Flipper-Folly (2.2.0):
- Flipper-Folly (2.5.3):
- boost-for-react-native
- CocoaLibEvent (~> 1.0)
- Flipper-DoubleConversion
- Flipper-Glog
- OpenSSL-Universal (= 1.0.2.19)
- libevent (~> 2.1.12)
- OpenSSL-Universal (= 1.1.180)
- Flipper-Glog (0.3.6)
- Flipper-PeerTalk (0.0.4)
- Flipper-RSocket (1.1.0):
- Flipper-Folly (~> 2.2)
- FlipperKit (0.33.1):
- FlipperKit/Core (= 0.33.1)
- FlipperKit/Core (0.33.1):
- Flipper (~> 0.33.1)
- Flipper-RSocket (1.3.1):
- Flipper-Folly (~> 2.5)
- FlipperKit (0.87.0):
- FlipperKit/Core (= 0.87.0)
- FlipperKit/Core (0.87.0):
- Flipper (~> 0.87.0)
- FlipperKit/CppBridge
- FlipperKit/FBCxxFollyDynamicConvert
- FlipperKit/FBDefines
- FlipperKit/FKPortForwarding
- FlipperKit/CppBridge (0.33.1):
- Flipper (~> 0.33.1)
- FlipperKit/FBCxxFollyDynamicConvert (0.33.1):
- Flipper-Folly (~> 2.1)
- FlipperKit/FBDefines (0.33.1)
- FlipperKit/FKPortForwarding (0.33.1):
- FlipperKit/CppBridge (0.87.0):
- Flipper (~> 0.87.0)
- FlipperKit/FBCxxFollyDynamicConvert (0.87.0):
- Flipper-Folly (~> 2.5)
- FlipperKit/FBDefines (0.87.0)
- FlipperKit/FKPortForwarding (0.87.0):
- CocoaAsyncSocket (~> 7.6)
- Flipper-PeerTalk (~> 0.0.4)
- FlipperKit/FlipperKitHighlightOverlay (0.33.1)
- FlipperKit/FlipperKitLayoutPlugin (0.33.1):
- FlipperKit/FlipperKitHighlightOverlay (0.87.0)
- FlipperKit/FlipperKitLayoutHelpers (0.87.0):
- FlipperKit/Core
- FlipperKit/FlipperKitHighlightOverlay
- FlipperKit/FlipperKitLayoutTextSearchable
- FlipperKit/FlipperKitLayoutIOSDescriptors (0.87.0):
- FlipperKit/Core
- FlipperKit/FlipperKitHighlightOverlay
- FlipperKit/FlipperKitLayoutHelpers
- YogaKit (~> 1.18)
- FlipperKit/FlipperKitLayoutTextSearchable (0.33.1)
- FlipperKit/FlipperKitNetworkPlugin (0.33.1):
- FlipperKit/FlipperKitLayoutPlugin (0.87.0):
- FlipperKit/Core
- FlipperKit/FlipperKitReactPlugin (0.33.1):
- FlipperKit/FlipperKitHighlightOverlay
- FlipperKit/FlipperKitLayoutHelpers
- FlipperKit/FlipperKitLayoutIOSDescriptors
- FlipperKit/FlipperKitLayoutTextSearchable
- YogaKit (~> 1.18)
- FlipperKit/FlipperKitLayoutTextSearchable (0.87.0)
- FlipperKit/FlipperKitNetworkPlugin (0.87.0):
- FlipperKit/Core
- FlipperKit/FlipperKitReactPlugin (0.87.0):
- FlipperKit/Core
- FlipperKit/FlipperKitUserDefaultsPlugin (0.33.1):
- FlipperKit/FlipperKitUserDefaultsPlugin (0.87.0):
- FlipperKit/Core
- FlipperKit/SKIOSNetworkPlugin (0.33.1):
- FlipperKit/SKIOSNetworkPlugin (0.87.0):
- FlipperKit/Core
- FlipperKit/FlipperKitNetworkPlugin
- Folly (2018.10.22.00):
@@ -69,10 +79,11 @@ PODS:
- GCDWebServer (3.5.4):
- GCDWebServer/Core (= 3.5.4)
- GCDWebServer/Core (3.5.4)
- GCDWebServer/WebUploader (3.5.4):
- GCDWebServer/Core
- glog (0.3.5)
- OpenSSL-Universal (1.0.2.19):
- OpenSSL-Universal/Static (= 1.0.2.19)
- OpenSSL-Universal/Static (1.0.2.19)
- libevent (2.1.12)
- OpenSSL-Universal (1.1.180)
- RCTRequired (0.62.2)
- RCTTypeSafety (0.62.2):
- FBLazyVector (= 0.62.2)
@@ -238,8 +249,9 @@ PODS:
- React-jsinspector (0.62.2)
- react-native-get-random-values (1.3.1):
- React
- react-native-static-server (0.4.2):
- GCDWebServer
- react-native-static-server (0.5.0):
- GCDWebServer (~> 3.0)
- GCDWebServer/WebUploader (~> 3.0)
- React
- react-native-webview (9.2.1):
- React
@@ -312,25 +324,25 @@ DEPENDENCIES:
- DoubleConversion (from `../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec`)
- FBLazyVector (from `../node_modules/react-native/Libraries/FBLazyVector`)
- FBReactNativeSpec (from `../node_modules/react-native/Libraries/FBReactNativeSpec`)
- Flipper (~> 0.33.1)
- Flipper (= 0.87.0)
- Flipper-DoubleConversion (= 1.1.7)
- Flipper-Folly (~> 2.1)
- Flipper-Folly (= 2.5.3)
- Flipper-Glog (= 0.3.6)
- Flipper-PeerTalk (~> 0.0.4)
- Flipper-RSocket (~> 1.0)
- FlipperKit (~> 0.33.1)
- FlipperKit/Core (~> 0.33.1)
- FlipperKit/CppBridge (~> 0.33.1)
- FlipperKit/FBCxxFollyDynamicConvert (~> 0.33.1)
- FlipperKit/FBDefines (~> 0.33.1)
- FlipperKit/FKPortForwarding (~> 0.33.1)
- FlipperKit/FlipperKitHighlightOverlay (~> 0.33.1)
- FlipperKit/FlipperKitLayoutPlugin (~> 0.33.1)
- FlipperKit/FlipperKitLayoutTextSearchable (~> 0.33.1)
- FlipperKit/FlipperKitNetworkPlugin (~> 0.33.1)
- FlipperKit/FlipperKitReactPlugin (~> 0.33.1)
- FlipperKit/FlipperKitUserDefaultsPlugin (~> 0.33.1)
- FlipperKit/SKIOSNetworkPlugin (~> 0.33.1)
- Flipper-RSocket (= 1.3.1)
- FlipperKit (= 0.87.0)
- FlipperKit/Core (= 0.87.0)
- FlipperKit/CppBridge (= 0.87.0)
- FlipperKit/FBCxxFollyDynamicConvert (= 0.87.0)
- FlipperKit/FBDefines (= 0.87.0)
- FlipperKit/FKPortForwarding (= 0.87.0)
- FlipperKit/FlipperKitHighlightOverlay (= 0.87.0)
- FlipperKit/FlipperKitLayoutPlugin (= 0.87.0)
- FlipperKit/FlipperKitLayoutTextSearchable (= 0.87.0)
- FlipperKit/FlipperKitNetworkPlugin (= 0.87.0)
- FlipperKit/FlipperKitReactPlugin (= 0.87.0)
- FlipperKit/FlipperKitUserDefaultsPlugin (= 0.87.0)
- FlipperKit/SKIOSNetworkPlugin (= 0.87.0)
- Folly (from `../node_modules/react-native/third-party-podspecs/Folly.podspec`)
- glog (from `../node_modules/react-native/third-party-podspecs/glog.podspec`)
- RCTRequired (from `../node_modules/react-native/Libraries/RCTRequired`)
@@ -365,7 +377,6 @@ SPEC REPOS:
trunk:
- boost-for-react-native
- CocoaAsyncSocket
- CocoaLibEvent
- Flipper
- Flipper-DoubleConversion
- Flipper-Folly
@@ -374,6 +385,7 @@ SPEC REPOS:
- Flipper-RSocket
- FlipperKit
- GCDWebServer
- libevent
- OpenSSL-Universal
- YogaKit

@@ -439,22 +451,22 @@ EXTERNAL SOURCES:

SPEC CHECKSUMS:
boost-for-react-native: 39c7adb57c4e60d6c5479dd8623128eb5b3f0f2c
CocoaAsyncSocket: 694058e7c0ed05a9e217d1b3c7ded962f4180845
CocoaLibEvent: 2fab71b8bd46dd33ddb959f7928ec5909f838e3f
CocoaAsyncSocket: 065fd1e645c7abab64f7a6a2007a48038fdc6a99
DoubleConversion: 5805e889d232975c086db112ece9ed034df7a0b2
FBLazyVector: 4aab18c93cd9546e4bfed752b4084585eca8b245
FBReactNativeSpec: 5465d51ccfeecb7faa12f9ae0024f2044ce4044e
Flipper: 6c1f484f9a88d30ab3e272800d53688439e50f69
Flipper: 1bd2db48dcc31e4b167b9a33ec1df01c2ded4893
Flipper-DoubleConversion: 38631e41ef4f9b12861c67d17cb5518d06badc41
Flipper-Folly: c12092ea368353b58e992843a990a3225d4533c3
Flipper-Folly: 755929a4f851b2fb2c347d533a23f191b008554c
Flipper-Glog: 1dfd6abf1e922806c52ceb8701a3599a79a200a6
Flipper-PeerTalk: 116d8f857dc6ef55c7a5a75ea3ceaafe878aadc9
Flipper-RSocket: 64e7431a55835eb953b0bf984ef3b90ae9fdddd7
FlipperKit: 6dc9b8f4ef60d9e5ded7f0264db299c91f18832e
Flipper-RSocket: 127954abe8b162fcaf68d2134d34dc2bd7076154
FlipperKit: 651f50a42eb95c01b3e89a60996dd6aded529eeb
Folly: 30e7936e1c45c08d884aa59369ed951a8e68cf51
GCDWebServer: 2c156a56c8226e2d5c0c3f208a3621ccffbe3ce4
glog: 1f3da668190260b06b429bb211bfbee5cd790c28
OpenSSL-Universal: 8b48cc0d10c1b2923617dfe5c178aa9ed2689355
libevent: 4049cae6c81cdb3654a443be001fb9bdceff7913
OpenSSL-Universal: 1aa4f6a6ee7256b83db99ec1ccdaa80d10f9af9b
RCTRequired: cec6a34b3ac8a9915c37e7e4ad3aa74726ce4035
RCTTypeSafety: 93006131180074cffa227a1075802c89a49dd4ce
React: 29a8b1a02bd764fb7644ef04019270849b9a7ac3
@@ -465,7 +477,7 @@ SPEC CHECKSUMS:
React-jsiexecutor: 1540d1c01bb493ae3124ed83351b1b6a155db7da
React-jsinspector: 512e560d0e985d0e8c479a54a4e5c147a9c83493
react-native-get-random-values: 148a42f97f2ce180a52d219144e83c278d4fe24b
react-native-static-server: bfd0c56efa27d951f6ec5c2b74759e2d8155538e
react-native-static-server: c209ebd0c2b51c97283c32ad49a8a39160846e77
react-native-webview: 9fb615251c147d1b94157b31fa0ea9c68b234c04
React-RCTActionSheet: f41ea8a811aac770e0cc6e0ad6b270c644ea8b7c
React-RCTAnimation: 49ab98b1c1ff4445148b72a3d61554138565bad0
@@ -481,6 +493,6 @@ SPEC CHECKSUMS:
Yoga: 3ebccbdd559724312790e7742142d062476b698e
YogaKit: f782866e155069a2cca2517aafea43200b01fd5a

PODFILE CHECKSUM: c29aa20ab2690262e047e134c8bc694a93709928
PODFILE CHECKSUM: 12ea39f1683e9b3a515db85b521f7e170dea0669

COCOAPODS: 1.9.1
COCOAPODS: 1.11.2
Loading