小编Pro*_*ver的帖子

PHAsset获取原始文件名

我想知道是否有办法使用PHAsset获取原始文件名?

我使用以下代码来提取文件信息.

   [[PHImageManager defaultManager] requestImageDataForAsset:asset options:requestOption resultHandler:^(NSData *imageData, NSString *dataUTI, UIImageOrientation orientation, NSDictionary *info) {
    entity.fileUrl =  [info objectForKey:@"PHImageFileURLKey"];
    entity.filename = [[NSFileManager defaultManager] displayNameAtPath:[ entity.fileUrl path]];
   }];
Run Code Online (Sandbox Code Playgroud)

但是,它没有返回原始名称,但格式为"img_123"的名称我刚检查了官方苹果文档.已经推出了一个新类PHAssetResource 和originalFilenameiOS 9+中可用的属性.问题是我使用了基于Photos框架的图像选择器库CTAssetsPickerController ; 它返回拾取的图像作为PHAsset对象.PS.我正在寻找与iOS 8兼容的解决方案:).谢谢!

objective-c ios ios8 phasset

16
推荐指数
3
解决办法
1万
查看次数

Rails + Capybara + poltergeist ArgumentError:rack-test需要一个机架应用程序,但没有给出

我刚刚开始玩Capycabra + poltergeist,执行我的Capy测试rspec ./spec/features/test_spec.rb 后出现以下错误:

 Failure/Error: visit '/item/new'
 ArgumentError: rack-test requires a rack application, but none was given
Run Code Online (Sandbox Code Playgroud)

此外,我有一些标准的rspec测试,每当我尝试执行所有测试时,rspec测试成功通过,但只有capy测试失败并出现奇怪的错误

ActionView::Template::Error: couldn't find file 'jquery.min' (in app/assets/javascripts/application.js:13)
Run Code Online (Sandbox Code Playgroud)

这让我感到困惑.

我在stackoverflow上查看了几个类似的线程,在某些情况下,错误是缺少config.include specyhel.rb中的Capybara :: DSL或测试的错误位置.我做了相应的更改,但它不起作用,错误仍然是相同的.

我的spec_helper.rb文件

require 'capybara'
require 'capybara/dsl'
require 'capybara/poltergeist'

Capybara.javascript_driver = :poltergeist

RSpec.configure do |config|
  config.include Capybara::DSL
end
Run Code Online (Sandbox Code Playgroud)

完整版spec_helper:http://pastebin.com/qkANfu39

测试文件:

#spec/features/test_spec.rb

require 'spec_helper'
describe 'accessibility of webpage' do
  it 'should access web page' do
    visit '/item/new'
    expect(page).to have_content("Something")
  end

end
Run Code Online (Sandbox Code Playgroud)

思考?

rspec ruby-on-rails capybara phantomjs ruby-on-rails-4

10
推荐指数
1
解决办法
6536
查看次数

Phasset + AfNetworking上传多个视频

目前我正在使用以下代码上传视频:

  NSURLRequest *urlRequest =  [[AFHTTPRequestSerializer serializer] multipartFormRequestWithMethod:@"POST" URLString:[[entity uploadUrl]absoluteString] parameters:entity.params constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
    [UploadModel getAssetData:entity.asset resultHandler:^(NSData *filedata) {
          NSString *mimeType =[FileHelper mimeTypeForFileAtUrl:entity.fileUrl];
        //  NSError *fileappenderror;

        [formData appendPartWithFileData:filedata name:@"data" fileName: entity.filename mimeType:mimeType];

    }];

} error:&urlRequestError];
Run Code Online (Sandbox Code Playgroud)

GetAssetData方法

+(void)getAssetData: (PHAsset*)mPhasset resultHandler:(void(^)(NSData *imageData))dataResponse{ 

            PHVideoRequestOptions *options = [[PHVideoRequestOptions alloc] init];
            options.version = PHVideoRequestOptionsVersionOriginal;

            [[PHImageManager defaultManager] requestAVAssetForVideo:mPhasset options:options resultHandler:^(AVAsset *asset, AVAudioMix *audioMix, NSDictionary *info) {

                if ([asset isKindOfClass:[AVURLAsset class]]) {
                    NSURL *localVideoUrl = [(AVURLAsset *)asset URL];
                    NSData *videoData= [NSData dataWithContentsOfURL:localVideoUrl];
                    dataResponse(videoData);

                }
            }];
    }
Run Code Online (Sandbox Code Playgroud)

这种方法的问题是,无论何时上传大/多个视频文件,应用程序都会耗尽内存.我想这是因为请求NSDATA(aka filedata …

iphone objective-c ios afnetworking phasset

8
推荐指数
2
解决办法
5117
查看次数

PHAsset + AFNetworking.无法将文件上传到真实设备上的服务器

目前我正在使用以下代码将文件上传到服务器

NSURLRequest *urlRequest =  [[AFHTTPRequestSerializer serializer] multipartFormRequestWithMethod:@"POST" URLString:[[entity uploadUrl]absoluteString] parameters:entity.params constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {

    // Get file url 
    [UploadModel getAassetUrl:entity.asset resultHandler:^(NSURL *fileUrl) {

    NSError *fileappenderror;
    // Append
                [formData appendPartWithFileURL:fileUrl name:@"data" error:&fileappenderror];

                if (fileappenderror) {
                  [Sys MyLog: [fileappenderror localizedDescription] ];
                }
            }];

        } error:&urlRequestError];
Run Code Online (Sandbox Code Playgroud)

/*getAassetUrl*/

+(void)getAassetUrl: (PHAsset*)mPhasset resultHandler:(void(^)(NSURL *imageUrl))dataResponse{

    PHImageRequestOptions * requestOption = [[PHImageRequestOptions alloc] init];
    requestOption.synchronous = YES;
    requestOption.deliveryMode = PHImageRequestOptionsDeliveryModeFastFormat;

        [[PHImageManager defaultManager] requestImageDataForAsset:mPhasset options:requestOption resultHandler:^(NSData *imageData, NSString *dataUTI, UIImageOrientation orientation, NSDictionary *info) {

        dataResponse([info objectForKey:@"PHImageFileURLKey"]);

    }];
}
Run Code Online (Sandbox Code Playgroud)

这种方法适用于模拟器,但在真实设备上失败:空文件很可能由于无法从本地存储读取而上载到服务器.日志显示通知

注意:Sandbox:MyApp(213)拒绝文件读取数据/private/var/mobile/Media/DCIM/101APPLE/IMG_1570.PNG

我相信这个笔记意味着app无法通过指定的路径访问该文件.此外,我尝试了一种替代方法,通过附加NSData来上传文件,NSData是从请求PHAsset数据返回的.但是这种方法在大型媒体文件的情况下是不可用的.因为整个文件都被加载到内存中. …

iphone objective-c ios afnetworking phasset

2
推荐指数
1
解决办法
3246
查看次数