- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想我已经能够使用 Multipart 格式将照片从 iPhone 发送到 Rails,但是一旦照片到达 Rails 服务器,我不知道如何正确保存它。我认为当调用 iphone_photo_to_website 时,该文件在 Rails 服务器上的参数中显示为“userfile”,位于下面的参数末尾:
Parameters: {"action"=>"iphone_photo_to_website","id"=>"8A39FA8F_1ADD_52AB_8387_E1C5CFC4AB2D", "controller"=>"users", "userfile"=>#<File:/tmp/RackMultipart30053-0>}
我使用以下 SO 问题中的 Objective-C 代码从 iPhone 发送照片:
How can I upload a photo to a server with the iPhone?
NSString *imagePath = [[NSBundle mainBundle] pathForResource:@"logo1" ofType:@"png"];
NSData *imageData = [NSData dataWithContentsOfFile:imagePath];
NSString *urlString = [NSString stringWithFormat:@"%@/users/iphone_photo_to_website/%@",
serverString, UID];
NSMutableURLRequest *imageRequest = [[NSMutableURLRequest alloc] init] ;
[imageRequest setURL:[NSURL URLWithString:urlString]];
[imageRequest setHTTPMethod:@"POST"];
NSString *boundary = [NSString stringWithString:@"---------------------------14737809831466499882746641449"];
NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@",boundary];
[imageRequest setValue:contentType forHTTPHeaderField: @"Content-Type"];
NSMutableData *body = [NSMutableData dataWithCapacity:[imageData length] + 512];
[body appendData:[[NSString stringWithFormat:@"--%@\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithString:@"Content-Disposition: form-data; name=\"userfile\"; filename=\"logo1.png\"\r\n\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithString:@"Content-Type: application/octet-stream\r\n\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[NSData dataWithData:imageData]];
[body appendData:[[NSString stringWithFormat:@"\r\n--%@--\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[imageRequest setHTTPBody:body];
theConnection = [[NSURLConnection alloc] initWithRequest:imageRequest
delegate:self];
在 Rails 服务器上,db/migrate 中的照片迁移如下所示:
class CreatePhotos < ActiveRecord::Migration
def self.up
create_table :photos do |t|
t.column :user_id, :integer
t.column :title, :string
t.column :body, :text
t.column :created_at, :datetime
# the following are for attachment_fu
t.column :photo, :binary
t.column :content_type, :string
t.column :filename, :string
t.column :size, :integer
t.column :parent_id, :integer
t.column :thumbnail, :string
t.column :width, :integer
t.column :height, :integer
end
end
def self.down
drop_table :photos
end
end
在 Rails 服务器上,我有一个照片模型 app/models/photo.rb ,其中包含以下代码:
class Photo < ActiveRecord::Base
has_attachment :storage => :file_system,
:resize_to => '640x480',
:thumbnails => { :thumb => '160x120', :tiny => '50>' },
:max_size => 5.megabytes,
:content_type => :image,
:processor => 'Rmagick'
validates_as_attachment
belongs_to :user
end
Rails Controller 有以下代码:
def iphone_photo_to_website
@udid = params[:id]
@userfile = params[:userfile]
@photo_params = { :user_id => @user.id,
:photo => @userfile,
:content_type => 'image',
:filename => @userfile.original_path,
:uploaded_data => @userfile
}
image = Photo.new(@photo_params)
image.save
end
当“image.save”执行时,它返回“false”。有谁知道我如何找到导致 image.save 返回 false 的错误?或者有谁知道如何将照片正确保存在数据库中?
最佳答案
我终于能够使用以下代码将图像保存到数据库:
@userfile = params[:userfile]
image = Photo.new(:uploaded_data => params[:userfile])
image.user_id = @user.id
image.photo = @userfile
image.width = 105
image.height = 104
basename = File.basename(image.filename).gsub(/[^\w._-]/, '')
image.content_type = "image/" + basename.split("\.")[1]
image.save
当使用 uploaded_data 字段将图像创建为 Photo.new 时,image.filename 就会被设置。
我还必须从 iPhone 上的 Objective-C 代码中删除以下行才能正常工作。
[body appendData:[[NSString stringWithString:@"Content-Type: application/octet-stream\r\n\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
关于iphone - 使用 Attachment_fu 将照片从 iPhone 上传到 Rails 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4854461/
我有一个不错的小“照片”类,其中附有图片。当我转到页面对照片的顺序进行排序时,它会遍历每张照片,设置新的“排序”值,然后保存。到目前为止一切都很好。 问题是,我注意到这种行为相当缓慢。事实证明,att
我有一个使用 attachment_fu 的 Rails 应用程序。目前,它使用 :file_system 进行存储,但我想将其更改为 :s3,以便在上传更多文件时更好地扩展。 这涉及到什么?我想如果
我希望能够验证图像是否为特定高度或特定高度,或者是否为正方形。 在 has_attachment 模型的验证 block 中,当我尝试访问 image_size、width 或 height,它总是以
我有一个模型,比方说附件,它使用 attachment_fu 接受用户上传的文件。我想“深度复制”(或在 Ruby-ese 中,深度克隆)一个附件,从而在“db_files”表中创建一个全新的二进制对
我在我的 Rails 应用程序中使用 Attachment_fu 处理文件附件,它提供了一个 public_filename 方法来检索文件的 URL。我在名为 Cover 的模型上使用它,所以如果我
我想我已经能够使用 Multipart 格式将照片从 iPhone 发送到 Rails,但是一旦照片到达 Rails 服务器,我不知道如何正确保存它。我认为当调用 iphone_photo_to_we
我正在尝试使用 attachment_fu 编写工作文件上传功能的规范。但是,作者给出的用于测试的示例代码要求我要求 action_controller/test_process 以便我可以访问 Ac
我有一个正在从 Rails 2.3.5 升级到 Rails 3 的 Rails 应用程序。它使用 attachment_fu 进行文件上传。我们正在尝试在不更改数据库的情况下进行此转换,因此我想避免此
我正在尝试将文件从 Flash 小部件上传到我的 Rails 应用程序,该应用程序使用 attachment_fu 来处理上传的图像。我使用 flash 上传,因为它可以很容易地选择和上传多个文件。但
关闭。这个问题是opinion-based 。目前不接受答案。 想要改进这个问题吗?更新问题,以便 editing this post 可以用事实和引文来回答它。 . 已关闭 8 年前。 Improv
我按照一个简单的示例来上传文件(请参阅下面的代码链接)。当我向上传表单添加字段 ,并单击表单上的提交按钮(有或没有文件附件)时,我在网页中收到一条错误消息:500 内部服务器错误 在服务器日志上我收到
我是一名优秀的程序员,十分优秀!